试图摆脱ES6 Maps上的自定义get/set功能.目前使用Babel将我的代码转换为ES5.
Chrome Version 41.0.2272.101 m
class MyMap extends Map {
get(key) {
if (!this.has(key)) { throw new Error(...); }
return super.get(key);
}
set(key) {
if (this.has(key)) { throw new Error(...); }
return super.set(key);
}
}
Run Code Online (Sandbox Code Playgroud)
不确定我是否只是语法错误或者我错过了某种类型的实现.但是我收到以下错误:
方法Map.prototype.forEach调用不兼容的接收器
ReferenceProperty在处理两个模块之间的引用时非常有用.Fox例子:
class UserProf(db.Model):
name = db.StringProperty(required=True)
class Team(db.Model):
manager_name = db.ReferenceProperty(UserProf, collection_name='teams')
name = db.StringProperty(required=True)
Run Code Online (Sandbox Code Playgroud)
它看起来不容易理解吗?
在使用NDB做同样的事情时,我们必须修改
db.ReferenceProperty(UserProf, collection_name='teams')
- > ndb.KeyProperty(kind=UserProf)
team_ins.manager_name.get()
会给你经理的名字为了让特定用户的所有团队成为管理者,我们必须这样做
for team in Team.query(Team.manager_name == user_ins.key):
print "team name:", team.name
Run Code Online (Sandbox Code Playgroud)正如您所看到的,处理这些场景在db中看起来比ndb更容易和可读.
提前致谢..
python google-app-engine app-engine-ndb google-cloud-datastore
我已经将ASP.NET Web API CacheOutput库用于我的web.net的asp.net项目并且它工作正常,但是我有一个POST方法的另一个控制器,我想从该控制器使我的缓存无效.
[AutoInvalidateCacheOutput]
public class EmployeeApiController : ApiController
{
[CacheOutput(ClientTimeSpan = 100, ServerTimeSpan = 100)]
public IEnumerable<DropDown> GetData()
{
//Code here
}
}
public class EmployeesController : BaseController
{
[HttpPost]
public ActionResult CreateEmployee (EmployeeEntity empInfo)
{
//Code Here
}
}
Run Code Online (Sandbox Code Playgroud)
我希望在员工控制器中添加\ update时使Employees Cache无效.
我在我的项目中使用了几个模块,但是,模块从记录器输出了大量日志,这很烦人.所以我通过以下方式关闭日志:
boto_log = logging.getLogger("boto")
boto_log.setLevel(logging.CRITICAL)
es_log = logging.getLogger("elasticsearch")
es_log.setLevel(logging.CRITICAL)
urllib3_log = logging.getLogger("urllib3")
urllib3_log.setLevel(logging.CRITICAL)
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但代码看起来很冗长.有没有更好,更简单的方法可以做到这一点?
我被告知使用角度事件可能很昂贵(我一直无法验证这一点)
对工厂或服务进行任何调用$broadcast
并$on
应该"包装"以注入相应的组件以保持性能?
同样,我宁愿$on
直接使用并直接监听被触发的事件,而不是创建一个工厂,它本质上只是在收到事件时注册要调用的函数 - 让我们称之为调度程序.
请注意,听到'some-event'不仅仅是一个组件(指令),还会有各种组件监听此事件.
示例调度员:
angular.module('app').factory('dispatcher', ['$rootScope', function ($rootScope) {
var registeredFns = [ ];
$rootScope.$on('some-event', function (evt, msg) {
_.each(registeredFns, function (fn) {
fn.apply(null, msg);
});
});
return {
onSomeEvent: function (fn) {
registeredFns.push(fn);
}
};
});
Run Code Online (Sandbox Code Playgroud)
并将它注入我需要它的地方 - 也许是一个指令,也许是一个无关紧要的控制器.
我只有一个"简单"同步锁定块:
private final Object screenLock = new Object();
public void Update(double deltaTime)
{
synchronized (screenLock)
{
screenManager.Update(deltaTime);
}
}
public void Draw()
{
synchronized (screenLock)
{
screenManager.Draw();
}
}
Run Code Online (Sandbox Code Playgroud)
deltaTime
不是null
,screenManager
不是null
,所以我有点失落.
我知道我不应该锁定这么高的级别,但是无论我把Block放在哪里,问题都会存在.我有运行两个线程Update
,并Draw
均与screenLock
.
什么会导致NullPointerException
锁定?
跟踪:
来自com.dnx.manavo.GameThread.run的com.dnx.manavo.ScreenManager.Update(ScreenManager.java:107)的com.dnx.manavo.ApplicationActivity.Update(ApplicationActivity.java:98)中的java.lang.NullPointerException( GameThread.java:43)
例如,假设我需要在收到两个事件"eventA"和"eventB"后运行一个函数.我通常做的是为每个事件声明一个布尔变量,在接收到事件时将变量设置为true,并询问另一个变量是否为true来运行该函数:
var a = false,
b = false;
$scope.$on("eventA", function(){
a = true;
if (b)
performTask();
});
$scope.$on("eventB", function(){
b = true;
if (a)
performTask();
});
var performTask = function() {
/* do something... */
};
Run Code Online (Sandbox Code Playgroud)
如果有三个或更多事件,这会变得更复杂.是否有设计模式来处理这些情况?
我开始绘制Quad,但是当我开始使用Vertices时,我发现X坐标被翻转了.下面是一张图片来说明我的意思:
这是我的顶点 - 指数和纹理坐标,我没有必要显示.
static final int COORDS_PER_VERTEX = 3;
static float positionCoords[] = {
-0.5f, 0.5f, 0.0f, // top left
-0.5f, -0.5f, 0.0f, // bottom left
0.5f, -0.5f, 0.0f, // bottom right
0.5f, 0.5f, 0.0f }; // top right
static final int COORDS_PER_TEXTURE = 2;
static float textureCoords[] = {
0.0f, 0.0f,
0.0f, 1.0f,
1.0f, 1.0f,
1.0f, 0.0f, };
private final short indices[] = { 0, 1, 2 };
Run Code Online (Sandbox Code Playgroud)
这是我更改投影和查看矩阵的地方.
public void onSurfaceChanged(GL10 naGl, int width, int height)
{ …
Run Code Online (Sandbox Code Playgroud) 有没有办法或应用程序允许我将我最新的Android构建推送到安装它的所有设备?我的应用尚未进入Google Play市场,但希望我的测试人员不必手动安装我推送的每个版本.
我目前正在使用Javascript构建一个库,并且非常喜欢Google的DevTools来进行调试.不幸的是,当我发布时,我不希望我的库记录.
这就是我的记录器当前设置的方式.
var debug = false;
var increaseSomething = function()
{
// Random Code...
if (debug) { console.log("Increased!"); }
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这非常烦人,我不应该在每次调用登录到控制台之前检查调试是否打开.
我可以尝试将控制台封装在我自己的日志记录对象中,但我觉得这不是一个好主意.有什么想法吗?
javascript ×3
angularjs ×2
java ×2
logging ×2
python ×2
android ×1
apk ×1
asp.net-mvc ×1
broadcast ×1
distribution ×1
ecmascript-6 ×1
events ×1
inheritance ×1
opengl-es ×1
outputcache ×1