标签: sync

如何将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万
查看次数

node.js同步执行系统命令

我需要在node.js函数中

result = execSync('node -v');
Run Code Online (Sandbox Code Playgroud)

同步执行给定的命令行并返回该命令文本的所有stdout.

PS.同步是错误的.我知道.仅供个人使用.

UPDATE

现在我们有mgutz的解决方案,它给我们退出代码,但不是stdout!仍在等待更精确的答案.

UPDATE

mgutz更新了他的答案,解决方案在这里:)
另外,正如dgo.a所提到的,有独立模块exec-sync

更新2014-07-30

ShellJS lib到了.认为这是目前最好的选择.


更新2015-02-10

最后!NodeJS 0.12原生支持execSync.
见官方文档

javascript command sync exec node.js

162
推荐指数
10
解决办法
14万
查看次数

Android Studio如何手动运行gradle sync?

我在Android Studio中调试Gradle问题并看到"运行gradle sync"的引用,但我不知道如何运行此命令.

如何从Android studio或Mac终端运行"Gradle sync"?

android sync gradle android-studio

100
推荐指数
6
解决办法
7万
查看次数

Vagrant中的符号链接和同步文件夹

我想使用Vagrant为我的团队提供一个共同的开发环境.主机完全不同:

  • 有些使用OS X,有些Linux和一些Windows.
  • 有些使用VMware,有些使用VirtualBox.

在VM内部我们想要运行Linux.

到目前为止,一切都很好.

现在我们的想法是每个开发人员都应该能够使用他们选择的IDE,因此我们引入了一个同步文件夹,该文件夹共享主机和VM之间的源代码.这基本上也适用......除了符号链接.

在我们的源代码中,我们实际上有一些符号链接,这在VM内部的Linux中不是问题,但在Windows上作为主机,这会导致问题.我们唯一不能做的就是摆脱符号链接,所以我们需要另一种方法来解决这个问题.

到目前为止,我们尝试了许多选择:

  • 在Vagrant 问题中提到了一种解决方法,不幸的是,这只是VirtualBox,并没有帮助那些运行VMware的人.到目前为止,我们还没有找到在Vagrantfile中运行代码的方法,具体取决于使用的提供程序.
  • 我们现在尝试使用rsync类型,而不是使用标准的共享文件夹.这适用于Windows,但在OS X上崩溃时会出现一些错误,告诉我们symlink has no referent(每个符号链接有一个错误).
  • 我们考虑过NFS,但只有在不使用Windows作为主机时才有效.
  • 我们也关于SMB,但这只能在Windows上作为主机使用.

我无法想象我们是这个星球上唯一或第一个遇到共享文件夹中的多平台主机和符号链接问题的人.

你如何解决这个问题,以便我们可以保持符号链接,但仍然使用不同的主机操作系统?

rsync synchronization sync vagrant vagrantfile

94
推荐指数
3
解决办法
6万
查看次数

双向同步rsync

我有一个文件夹a /和一个远程文件夹A /.我现在在Makefile上运行这样的东西:

get-music:
 rsync -avzru server:/media/10001/music/ /media/Incoming/music/

put-music:
 rsync -avzru /media/Incoming/music/ server:/media/10001/music/

sync-music: get-music put-music
Run Code Online (Sandbox Code Playgroud)

当我制作同步音乐时,它首先获取从服务器到本地的所有差异然后相反,将所有差异从本地发送到服务器.

只有在将来只有更新或新文件时,这才能很好地工作.如果有删除,它什么都不做.

在rsync中有--delete和--delete-after选项来帮助实现我想要的东西但事情是,它不适用于双向同步.

如果我想删除syn上的服务器文件,当本地文件被删除时,它可以工作,但如果由于某种原因(后面解释)我有一些不在服务器但在本地存在并且被删除的文件,我想在本地删除它们而不是服务器复制(当它发生).

事情是我在上下文中有3台机器:

  1. 桌面
  2. 笔记本
  3. 家庭服务器

因此,有时,服务器将具有使用笔记本同步删除的文件,例如然后,当我与我的桌面运行同步时(删除的服务器文件仍然存在)我希望删除这些文件而不是再次复制到服务器.

我想这只能用于数据库和操作跟踪:P

更简单的解决方案?谢谢.

rsync sync file two-way

92
推荐指数
6
解决办法
11万
查看次数

Laravel,sync() - 如何同步数组并传递额外的数据透视字段?

官方Laravel文档具有以下sync()功能:

$user->roles()->sync( array( 1, 2, 3 ) );
Run Code Online (Sandbox Code Playgroud)

您还可以将其他数据透视表值与给定ID相关联:

$user->roles()->sync( array( 1 => array( 'expires' => true ) ) );
Run Code Online (Sandbox Code Playgroud)

在后一示例中,仅添加了一个枢轴行.我不明白的是,如果要同步多行,如何关联其他数据透视表记录?

提前致谢.

php pivot sync laravel eloquent

54
推荐指数
4
解决办法
7万
查看次数

如何在同一台服务器上复制MySQL数据库

我有一个庞大的MySQL数据库,让我们调用它live_db,我想在同一台机器上复制它以提供一个测试系统来玩(test_db),包括表结构和数据.我定期更新test_db内容live_db; 如果可能的增量.

MySQL中是否有一些内置机制可以做到这一点?我认为主从复制不是我想要的东西,因为它应该可以改变数据test_db.但是,不必保留这些更改.

问候,

CGD

mysql database sync replicate

49
推荐指数
3
解决办法
4万
查看次数

如何使用Dropbox同步我的Sublime Text 3设置?

我想使用Dropbox在多台机器上同步Sublime Text 3的设置.

我该如何设置?

macos settings sync dropbox sublimetext3

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

无帐户同步适配器

我需要从我的应用程序通过云获取一些数据.我在RESTful安卓应用上观看了谷歌IO视频@ http://www.youtube.com/watch?v=xHXn3Kg2IQE&t=43m58s它建议在最终幻灯片中使用SyncAdapter与Android系统集成.

后来我了解到必须使用帐户来实现SyncAdapter.我的应用不使用帐户.用户无需注册即可自由下载数据.我还可以使用SyncAdapter吗?我可以使用股票虚拟账户吗?

编辑:我的应用程序有一个内容提供商,所以这不是问题

编辑2:我刚看了设置 - >帐户和同步下的天气和股票应用程序.您可以看到它们允许同步,但没有删除帐户按钮.另一方面,谷歌,Facebook和Skype应用程序允许同步PLUS他们有一个删除帐户按钮.这意味着天气和股票不使用账户,而谷歌,Facebook和Skype都这样做.

我找到的教程@ http://ericmiles.wordpress.com/2010/09/22/connecting-the-dots-with-android-syncadapter/和@ http://www.c99.org/2010/01/23/writing-an-android-sync-provider-part-1 /说必须有一个帐户才能使用同步适配器.:S ???

account rest android sync adapter

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

Android Studio更新0.5.3 - 未找到平台'android-19'

昨天我打开Android Studio,它要求我更新.我现在已经完全安装了v0.5.3,SDK 19和gradle 0.9.+.我认为这些信息是正确的,但我不完全清楚gradle策略是如何工作的.

问题是我的gradle应用程序停止了同步,即使我创建了一个全新的项目,它也不会同步.以下是详细信息:

Project的build.gradle:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.9.+'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}
Run Code Online (Sandbox Code Playgroud)

App的build.gradle:

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 8
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile 'com.android.support:appcompat-v7:19.+'
    compile fileTree(dir: 'libs', include: …
Run Code Online (Sandbox Code Playgroud)

sdk android sync android-studio build.gradle

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