我正在尝试在 html5 canvas 上制作一个动画,该动画应该在移动时跟随可拖动的 div,如下所示:
draggable_div.draggable({
drag: function(e, ui) {
canvasDrawSomethingNearDraggable(ui);
}
stop: function(e, ui) {
canvasDrawSomethingNearDraggable(ui);
}
});
function canvasDrawRectangleUnderDraggable {
for (i = 0; i < 10; i++) { // draw overlapping circles in fixed order
context.beginPath();
context.arc(x[i], y[i], 10, 0, 2 * Math.PI, false);
context.fillStyle = c[i];
context.fill();
context.stroke();
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我移动可拖动元素时,动画滞后(移动速度越快,间隙就越大,并且仅当可拖动停止事件触发时才会关闭):

有没有办法解决或减轻这个问题?我应该计算拖动事件之间的时间并以这种方式减少对绘图函数的调用还是有更好的解决方案?
替换此代码是否安全:
def view(request):
reporter.stories_filed = F('stories_filed') + 1
Run Code Online (Sandbox Code Playgroud)
有了这个:
@transaction.atomic
def view(request):
reporter.stories_filed += 1
Run Code Online (Sandbox Code Playgroud)
这是错误的:
@transaction.atomic
def view(request):
reporter.stories_filed = F('stories_filed') + 1
Run Code Online (Sandbox Code Playgroud)
?
我的网站有超过20.000.000个条目,条目有类别(FK)和标签(M2M).至于查询,即使像SELECT id FROM table ORDER BY id LIMIT 1000000, 10MySQL需要扫描1000010行,但这实在是慢得令人无法接受(而pks,索引,连接等等在这里帮助不大,仍然是1000010行).所以我试图通过使用这样的触发器存储行计数和行号来加速分页:
DELIMITER //
CREATE TRIGGER @trigger_name
AFTER INSERT
ON entry_table FOR EACH ROW
BEGIN
UPDATE category_table SET row_count = (@rc := row_count + 1)
WHERE id = NEW.category_id;
NEW.row_number_in_category = @rc;
END //
Run Code Online (Sandbox Code Playgroud)
然后我可以简单地说:
SELECT *
FROM entry_table
WHERE row_number_in_category > 10
ORDER BY row_number_in_category
LIMIT 10
Run Code Online (Sandbox Code Playgroud)
(现在只扫描了10行,因此选择速度非常快,虽然插入速度较慢,但与选择相比它们很少见,所以没关系)
这是一个糟糕的方法,还有什么好的选择吗?
我试图将我的Django应用程序设置为在多个域中工作(同时提供稍微不同的内容),我编写了以下中间件:
class MultiSiteMiddleware(object):
def process_request(self, request):
host = request.get_host()
host_part = host.split(':')[0].split('.com')[0].split('.')
host = host_part[len(host_part)-1] + '.com'
site = Site.objects.get(domain=host)
settings.SITE_ID = site.id
settings.CURRENT_HOST = host
Site.objects.clear_cache()
return
Run Code Online (Sandbox Code Playgroud)
在视图中,我使用以下代码:
def get_site(request):
current_site = get_current_site(request)
return current_site.name
def view(request, pk):
site = get_site(request)
if site == 'site1':
# serve content1
...
elif site == 'site2'
# serve content2
...
Run Code Online (Sandbox Code Playgroud)
但是现在有404错误(我有时会在日志中找到它们,而在手动浏览我的网站时看不到它们)应该不在哪里,就像我的网站有时正在为错误的域提供内容一样,这些错误可能是由于上述中间件存在一些缺陷并查看代码,还是我应该去别的地方看?
当使用 multiprocessing.JoinableQueue 生成进程的线程时,我收到 BrokenPipeError 。似乎是在程序完成工作并尝试退出之后发生的,因为它做了它应该做的所有事情。这是什么意思,有没有办法解决这个问题/安全忽略?
import requests
import multiprocessing
from multiprocessing import JoinableQueue
from queue import Queue
import threading
class ProcessClass(multiprocessing.Process):
def __init__(self, func, in_queue, out_queue):
super().__init__()
self.in_queue = in_queue
self.out_queue = out_queue
self.func = func
def run(self):
while True:
arg = self.in_queue.get()
self.func(arg, self.out_queue)
self.in_queue.task_done()
class ThreadClass(threading.Thread):
def __init__(self, func, in_queue, out_queue):
super().__init__()
self.in_queue = in_queue
self.out_queue = out_queue
self.func = func
def run(self):
while True:
arg = self.in_queue.get()
self.func(arg, self.out_queue)
self.in_queue.task_done()
def get_urls(host, out_queue):
r = requests.get(host)
out_queue.put(r.text) …Run Code Online (Sandbox Code Playgroud) 我想在Django中使用Angular2,但是它们都在模板中使用双花括号,有没有办法将它们更改为Angular2或Django中的其他东西(仅为Jinja2模板引擎找到一种方法,但不是Django模板引擎)这在Angular2中是不可能的?
真正感谢官方文档的链接(很奇怪,但我在那里找不到任何相关内容)
django ×2
angular ×1
javascript ×1
jquery-ui ×1
mysql ×1
pagination ×1
python ×1
transactions ×1