小编Ric*_*Vel的帖子

如何将iPhone核心数据与Web服务器同步,然后推送到其他设备?

我一直在研究一种方法,用于在多个设备(如iPad或Mac)之间同步存储在iPhone应用程序中的核心数据.在iOS上使用Core Data的同步框架并不多(如果有的话).但是,我一直在考虑以下概念:

  1. 对本地核心数据存储进行更改,并保存更改.(a)如果设备在线,它会尝试将变更集发送到服务器,包括发送变更集的设备的设备ID.(b)如果变更集未到达服务器,或者设备未联机,则应用程序会将更改集添加到队列中以在其联机时发送.
  2. 位于云中的服务器将其接收的特定更改集与其主数据库合并.
  3. 在云服务器上合并更改集(或更改集队列)后,服务器会使用某种轮询系统将所有这些更改集推送到向服务器注册的其他设备.(我想使用Apple的推送服务,但显然根据评论,这不是一个可行的系统.)

我需要考虑什么花哨的东西吗?我查看了REST框架,例如ObjectiveResource,Core ResourceRestfulCoreData.当然,这些都与Ruby on Rails一起使用,我并不依赖它,但它是一个开始的地方.我对我的解决方案的主要要求是:

  1. 任何更改都应该在后台发送而不会暂停主线程.
  2. 它应该使用尽可能少的带宽.

我考虑过一些挑战:

  1. 确保服务器上附加了不同设备上不同数据存储的对象ID.也就是说,我将有一个对象ID和设备ID表,它们通过对存储在数据库中的对象的引用来绑定.我将有一条记录(DatabaseId [此表是唯一的],ObjectId [整个数据库中的项目唯一],Datafield1,Datafield2),ObjectId字段将引用另一个表AllObjects:(ObjectId,DeviceId,DeviceObjectId).然后,当设备推送更改集时,它将从本地数据存储中的核心数据对象传递设备Id和objectId.然后我的云服务器将检查AllObjects表中的objectId和设备ID,并找到要在初始表中更改的记录.
  2. 所有更改都应加上时间戳,以便合并它们.
  3. 设备必须轮询服务器,而不会耗尽太多电池.
  4. 如果/当从服务器收到更改时,本地设备还需要更新内存中保存的任何内容.

还有什么我在这里失踪的吗?我应该考虑哪些框架才能实现这一目标?

iphone sync core-data ios data-synchronization

291
推荐指数
7
解决办法
9万
查看次数

156
推荐指数
6
解决办法
24万
查看次数

如何使用PyCharm启动远程调试?

我正在尝试在PyCharm(在Windows主机上)和运行我的django应用程序的debian虚拟主机之间进行调试.说明说要安装egg,添加导入,然后调用命令.我假设这些东西需要在debian主机上完成?

好的,那么,我应该把这两行放在什么文件中?

from pydev import pydevd
pydevd.settrace('not.local', port=21000, stdoutToServer=True, stderrToServer=True)
Run Code Online (Sandbox Code Playgroud)

我尝试将它放入settings.py但是得到了这样的东西......

File "/django/conf/__init__.py", line 87, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
File "/django/utils/importlib.py", line 35, in import_module
    __import__(name)
File "/settings.py", line 10, in <module>
    pydevd.settrace('dan.local', port=21000, stdoutToServer=True, stderrToServer=True)
File "/pycharm-debug.egg/pydev/pydevd.py", line 1079, in settrace
    debugger.connect(host, port)
File "/pycharm-debug.egg/pydev/pydevd.py", line 241, in connect
    s = StartClient(host, port)
File "/pycharm-debug.egg/pydev/pydevd_comm.py", line 362, in StartClient
    sys.exit(1)
SystemExit: 1
Run Code Online (Sandbox Code Playgroud)

虽然pycharm只是坐在那里"等待连接"

python django remote-debugging pycharm

50
推荐指数
2
解决办法
4万
查看次数

django的竞争条件

以下是具有潜在竞争条件的django视图的简单示例:

# myapp/views.py
from django.contrib.auth.models import User
from my_libs import calculate_points

def add_points(request):
    user = request.user
    user.points += calculate_points(user)
    user.save()
Run Code Online (Sandbox Code Playgroud)

竞争条件应该是相当明显的:用户可以两次发出此请求,并且应用程序可能user = request.user同时执行,导致其中一个请求覆盖另一个请求.

假设函数calculate_points相对复杂,并且基于各种奇怪的东西进行计算,这些东西不能放在一个单独的update并且很难放入存储过程中.

所以这是我的问题:django可以使用哪种锁定机制来处理类似的情况?

python database django locking race-condition

35
推荐指数
4
解决办法
1万
查看次数

使用become/become_user的Ansible 2.1.0无法设置临时文件的权限

我的服务器上有一个ansible 2.1.0,我通过vagrant和PC 进行部署."部署"角色具有:

- name: upload code
  become: true
  become_user: www-data
  git: repo=git@bitbucket.org:****.git
     dest=/var/www/main
     key_file=/var/www/.ssh/id_rsa
     accept_hostkey=true
     update=yes
     force=yes
 register: fresh_code
 notify: restart php-fpm
 tags: fresh_code
Run Code Online (Sandbox Code Playgroud)

在这种情况下使用ansible 2.1.0我收到一个错误:

fatal: [default]: FAILED! => {"failed": true, "msg": "Failed to set permissions on the temporary files Ansible needs to create when becoming an unprivileged user. For information on working around this, see https://docs.ansible.com/ansible/become.html#becoming-an-unprivileged-user"}
Run Code Online (Sandbox Code Playgroud)

我在我的电脑上使用它的2.0.1.0,通常都是 - 文件夹/ var/www /有文件夹主要与所有者和组www-data

如果我只使用become_user:www-data,如果我使用become_method:sudo with become_user:www-data - 我得到了同样的错误

需要做些什么来解决这个问题?

git sudo vagrant ansible ansible-2.x

29
推荐指数
2
解决办法
1万
查看次数

不应该在IE10中"兼容X-UA兼容IE =边缘"标题覆盖"在兼容性视图中显示内部网站点"?

我有一个简单的HTML5/ASP.NET网站,自从Win7发布以来,我今天开始在IE10中进行测试.

这是我组织内的一个Intranet站点,我相信有一段时间后,部署了一个组策略,默认情况下在兼容性视图中启用Display Intranet站点.

我今天在测试中注意到的事情是,即使我正在添加一个X-UA兼容的IE =边缘 HTTP标头(通过我的web.config),该网站在IE中显示为:

Browser Mode: IE10 Compat View
Document Mode: Standards
Run Code Online (Sandbox Code Playgroud)

我相信我的HTML实际上是正常不过的,因为我可以简单地取消在兼容性视图中显示Intranet站点设置,当它重新加载,它会立即切换到:

Browser Mode: IE10
Document Mode: Standards
Run Code Online (Sandbox Code Playgroud)

所以我的问题很简单,IE = edge header值是否应该覆盖兼容性视图设置中的Display Intranet站点

如果没有,有什么办法可以覆盖它吗?

html asp.net iis internet-explorer-10

27
推荐指数
3
解决办法
2万
查看次数

Django的原子操作?

我正在尝试实现(我认为)一个非常简单的计数器数据模型:

class VisitorDayTypeCounter(models.Model):
    visitType = models.CharField(max_length=60)
    visitDate = models.DateField('Visit Date')
    counter = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)

当有人通过时,它将查找与visitType和visitDate匹配的行; 如果此行不存在,则将使用counter = 0创建.

然后我们增加计数器并保存.

我担心的是这个过程完全是一场竞赛.两个请求可以同时检查实体是否存在,并且它们都可以创建它.在读取计数器并保存结果之间,另一个请求可能会通过并递增(导致计数丢失).

到目前为止,我还没有找到一个很好的方法,无论是在Django文档还是在教程中(实际上,看起来教程在投票部分有竞争条件).

我该如何安全地做到这一点?

database django concurrency locking race-condition

24
推荐指数
5
解决办法
8181
查看次数

管理SalesForce应用程序开发的最佳实践?

我们正在为AppExchange开发应用程序,并试图找出进行开发和发布管理的最佳方法.这有几个问题:

1)包前缀.我们正在以非托管模式开发代码并以托管方式发布,因此我们必须将所有包前缀添加到代码中.有没有办法在运行时动态执行此操作?现在我们正在使用Ant脚本,这会阻止我们从force.com IDE插件中受益.

2)资源文件......我们正在做一些ajax-ey的东西,因此我们上传了一些不同的资源文件,其中一些是多个文件资源(zip文件).有没有人使用ANT自动构建这些资源,这样做效果如何?

我们的环境看起来非常脆弱,对一些开发人员而不是其他人开放; 有其他人有这个问题吗?你是怎么解决的?

development-environment salesforce package

24
推荐指数
1
解决办法
5605
查看次数

如何将Mono .exe转换为OS X的捆绑包?

我有一个为Windows开发的应用程序,但在单声道MacOS下运行正常,没有任何修改(耶!).但是,由于它是可执行的,因此OSX不会将其识别为本机文件类型,这意味着您必须转到命令行才能运行"mono appname.exe".它也不显示应用程序图标.如果重要,我的测试环境是Snow Leopard w/Mono 2.6.1.

据我了解,在Mac世界中,让用户掉到命令行是不合情理的粗鲁.是否有一种"正确的方法"来部署Mono应用程序,以便可以通过单击图标来运行 - 如果这样的东西存在,可能是Mac等效的快捷方式?我听说过一种叫做"捆绑"的东西,但也许那些不适用于Mono/.NET应用程序.

那么,是否有一种"正确的方法"可以让用户更轻松地运行应用程序?

.net deployment macos mono

20
推荐指数
1
解决办法
7171
查看次数

terraform中是否有方法和/或条件运算符?

有没有办法在Terraform中使用这样的东西?

count ="$ {var.I_am_true}"&&"$ {var.I_am_false}"

terraform

15
推荐指数
4
解决办法
2万
查看次数