最近我一直在考虑优化。我正在开发一个应用程序,使我考虑平衡服务器负载,内存,客户端,负载,速度,大小等时,应该在哪里处理数据。
我想更好地了解经验丰富的程序员在考虑处理时如何优化其代码。采取以下3种选择:
你们在哪个场合更喜欢哪个?为什么?对这个广泛的问题感到抱歉,如果有人可以向我推荐有关此方面的出色阅读资料,我也将非常感谢。
我在 Laravel 中与枢轴对象/表有多对多关系。我想创建此表中一个条目的副本,维护所有数据透视属性(我有额外的关系属性)并创建一个新的 id。
laravel 可以吗?还是我应该将一些原始 sql 写入数据库?
我正在向无服务器部署的Lambda函数提交表单,这是yml:
functions:
hello:
handler: handler.hello
events:
- http: POST hello
Run Code Online (Sandbox Code Playgroud)
现在我的问候函数是:
module.exports.hello = (event, context, callback) => {
const response = {
statusCode: 200,
body: JSON.stringify({
message: 'Go Se222rverless v1.0! Your function executed successfully!',
input: event,
}),
};
callback(null, response);
};
Run Code Online (Sandbox Code Playgroud)
我在输出中可以看到传递了变量,但它们按如下方式存储在event.body属性中:
"body":"email=test%40test.com&password=test12345"
Run Code Online (Sandbox Code Playgroud)
现在,我可以访问该字符串,但是我无法从中读取单个变量,除非我进行了一些正则表达式转换,我相信,在诸如无服务器/ aws这样的现代堆栈中,情况并非如此。
我想念什么?如何读取各个变量?
如何检查浏览器是否支持Zoom css atribute?我从Caniuse.com得知只有Firefoz不支持它,所以,从这个问题(在Javascript中,我如何确定我当前的浏览器是否是计算机上的Firefox与其他所有浏览器?)我试过:
if ($.browser.mozilla) { ...
Run Code Online (Sandbox Code Playgroud)
这会在chrome中返回错误:
Cannot read property 'mozilla' of undefined
Run Code Online (Sandbox Code Playgroud)
根据答案的另一个解决方案是如果浏览器支持该功能,我会怎么做?
我正在使用Laravel 5.3 .. Model.php具有以下功能:
public function forceDelete()
{
return $this->delete();
}
Run Code Online (Sandbox Code Playgroud)
但是,我正在使用softDeletes trait实现它,它具有以下功能:
public function forceDelete()
{
$this->forceDeleting = true;
$deleted = $this->delete();
$this->forceDeleting = false;
return $deleted;
}
Run Code Online (Sandbox Code Playgroud)
但是,我正在重写这个功能,用这个:
public function forceDelete()
{
echo "deleting";
return parent::forceDelete();
}
Run Code Online (Sandbox Code Playgroud)
在最后一次覆盖中,在我调用parent :: forceDelete()的行上,它从model.php而不是softDeletes.php调用版本.我怎么能从softDeletes调用呢?它甚至可能吗?
我正在使用 Electron,我正在为我的应用程序创建一个托盘图标。Electron 自己的文档(https://electronjs.org/docs/api/tray#tray-popupcontextmenu-position-os-x-windows)显示我可以使用以下代码在菜单上选择单选按钮:
const {app, Menu, Tray} = require('electron')
let tray = null
app.on('ready', () => {
tray = new Tray('/path/to/my/icon')
const contextMenu = Menu.buildFromTemplate([
{label: 'Item1', type: 'radio'},
{label: 'Item2', type: 'radio'},
{label: 'Item3', type: 'radio', checked: true},
{label: 'Item4', type: 'radio'}
])
tray.setToolTip('This is my application.')
tray.setContextMenu(contextMenu)
})
Run Code Online (Sandbox Code Playgroud)
这会创建按钮,但我在文档中找不到如何从这些按钮获取事件和读取数据的任何地方。如何?
我正在使用laravel FindOrNew()来获取带有两个参数的条目,或者创建一个新参数:
$option = \App\Option::findOrNew(['user_id' => $this->id , 'option_name' => $optionName]);
Run Code Online (Sandbox Code Playgroud)
我想为$ optionName中具有名称的用户获取一个选项.问题是它只是检查user_id,并且当option_name不存在时不会创建新的..而是"找到"与$ optionName值不匹配的那个.
谁能说出我做错了什么?我怎样才能做到这一点?
我正在使用以下Vue指令来检测元素外部的点击:
Vue.directive('click-outside', {
bind: function (el, binding, vnode) {
el.clickOutsideEvent = function (event) {
// here I check that click was outside the el and his childrens
if (!(el == event.target || el.contains(event.target))) {
// and if it did, call method provided in attribute value
vnode.context[binding.expression](event);
}
};
document.body.addEventListener('click', el.clickOutsideEvent)
},
unbind: function (el) {
document.body.removeEventListener('click', el.clickOutsideEvent)
},
});
Run Code Online (Sandbox Code Playgroud)
当我提供这样的方法时,效果很好:
<div id="profile-list-container" v-click-outside="closeProfiles">
Run Code Online (Sandbox Code Playgroud)
但是,当我在属性中放入直接表达式时,它什么也没做:
<div id="profile-list-container" v-click-outside="isProfileOpen = false">
Run Code Online (Sandbox Code Playgroud)
我看到这行vnode.contextbinding.expression; 出了什么问题,但是我不确定如何进行更改以使其正常工作。
我正在尝试应用 png 精灵作为另一层的蒙版。我从 pixi.js 官方网站获取了演示并制作了这个小提琴:
https://jsfiddle.net/raphadko/ukc1rwrc/
这是我正在使用的屏蔽的核心代码:
var brush = PIXI.Sprite.fromImage('http://i.imgur.com/LtSbbSP.png');
brush.anchor.set(0.5);
app.stage.addChild(brush);
brush.x = app.renderer.width / 2;
brush.y = app.renderer.height / 2;
var thing = new PIXI.Graphics();
app.stage.addChild(thing);
thing.x = app.renderer.width / 2;
thing.y = app.renderer.height / 2;
thing.lineStyle(0);
container.mask = thing;
Run Code Online (Sandbox Code Playgroud)
您可以看到,当应用“things”对象(不是精灵而是 Graphics() 元素)时,遮罩效果很好。现在,如果您更改第 31 行和 37 行以应用名为 Brush 的精灵,则遮罩不起作用.(单击可打开和关闭遮罩)
如何对 png 精灵进行遮罩?
我有一个本地的pouchDB任务。直到我尝试设置与IBM Cloudant noSQL的同步之前,它都运行良好。到目前为止,主要的问题在于remove()方法,我这样编写:
$(document).on("click","#taskList li .delete", function(){
db.remove(id,rev);
refreshTasks();
});
Run Code Online (Sandbox Code Playgroud)
当关闭同步后,该方法可以完美工作,但是一旦我激活以下各行的同步,就不会从本地和远程删除任务。我正在运行PouchDB与以下代码同步:
db.sync(remote_db, {
live: true,
retry: true
}).on('change', function (change) {
// yo, something changed!
}).on('paused', function (info) {
// replication was paused, usually because of a lost connection
}).on('active', function (info) {
// replication was resumed
}).on('error', function (err) {
// totally unhandled error (shouldn't happen)
});
Run Code Online (Sandbox Code Playgroud)
我的数据库就是这样创建的:
var db = new PouchDB('tasks', {revs_limit: 1, auto_compaction: true});
Run Code Online (Sandbox Code Playgroud)
现在,当我创建revs_limit为0的数据库时,它将再次工作。
可能会发生什么?