可以说我有自定义对象的名单如下:ArrayList<GroupItem>这里GroupItem是一些具有类int和String变量.
我到目前为止尝试了Gson库,但这并不是我想要的.
ArrayList<GroupItem> groupsList = /* ... */
Gson gson = new Gson();
JsonElement element = gson.toJsonTree(groupsList, new TypeToken<ArrayList<GroupItem>>() {}.getType());
JsonArray jsonArray = element.getAsJsonArray();
Run Code Online (Sandbox Code Playgroud)
我的目标是以JSONArray某种方式得到(org.Json.JSONArray).有任何想法吗?
[编辑]
我的项目是带有基于API的Cordova的Android org.Json.JSONArray
我想写一些通用的方法将实例转换为JSONArray/JSONObject
谢谢,
我编写了Android应用程序,用于侦听传入的Calendar事件,并在后台应用程序时触发我的流程.
现在我尝试为iOS做同样的事情.
我阅读了很多内容并运行了一些使用EKEventStore和后台获取的演示.
然而,这种方法并不能满足我.
还有其他办法吗?
[编辑]
应用程序仅使用公共API.
谢谢,
我有Android多线程应用程序.
两个或更多触发器有可能运行相同的代码部分.
我有一个对象列表.
我让它同步了 Collections.synchronizedList
private List<WmGroupItemSample> mGroupItemSampleList;
mGroupItemSampleList = new ArrayList<WmGroupItemSample>();
mGroupItemSampleList = Collections.synchronizedList(mGroupItemSampleList);
Run Code Online (Sandbox Code Playgroud)
但有时我会在线获得Exception:
Collections.sort(mGroupItemSampleList, new GroupItemSampleComparator());
Run Code Online (Sandbox Code Playgroud)
java.util.ConcurrentModificationException
at java.util.AbstractList$SimpleListIterator.next(AbstractList.java:62)
at java.util.Collections.sort(Collections.java:1895)
Run Code Online (Sandbox Code Playgroud)
Collections.synchronizedList不阻止此异常?[编辑]
GroupItemSampleComparator
public class GroupItemSampleComparator implements java.util.Comparator<WmGroupItemSample> {
public GroupItemSampleComparator() {
super();
}
public int compare(WmGroupItemSample s1, WmGroupItemSample s2) {
return ( (s2.getStartDate() - s1.getStartDate()) > 0 ) ? (-1) : (1);
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢,
我尝试编写Swift片段来向Telnet发送命令,但我需要先登录.
在OSX上我生成了一个Telnet服务:launchctl load -F /System/Library/LaunchDaemons/telnet.plist.之后我能够从其他计算机连接到IP:XXX.XXX.X.XXX端口23.
例如,从Windows 7:
telnet XXX.XXX.X.XXX 23
.....
Darwin/BSD (fess.local) (ttys009)
login: snaggs
Password:xxxxxx
snaggs:~ lur$
Run Code Online (Sandbox Code Playgroud)
在命令行中,Telnet要求我输入用户名和密码.之后我可以运行任何Linux命令.到现在为止还挺好.
我为Android编写了Telnet模块,因此OSX Telnet服务正常工作.这意味着我看到login:并password:输出所以我能够处理它.
现在我坚持使用iOS Swift,我用Google搜索并找到了非常好的解决方案,应该适用于我的情况:
所以我写了我的家庭作品:
class TelnetClient : NSObject, NSStreamDelegate{
private var inputStream: NSInputStream!
private var outputStream: NSOutputStream!
func initNetworkCommunication(){
let host : CFString = "XXX.XXX.X.XXX"
let port : UInt32 = 23
var readstream : Unmanaged<CFReadStream>?
var writestream : Unmanaged<CFWriteStream>?
CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault, host, port, &readstream, …Run Code Online (Sandbox Code Playgroud) 我想验证Google收据验证,但由于我没有客户端密钥,因此我无法使用Google API:https: //developers.google.com/android-publisher/archive/v1_1/inapppurchases/get
所以我做局部验证通过public key,signedData和signature.
一切正常,因为我有新orderId的格式:
GPA.XXXX-XXXX-XXXX-XXXXX
但是,此代码不适用于旧模式orderId,如下所示:
4582257046313445026.7467948335710411
Run Code Online (Sandbox Code Playgroud)
我得到例外:
签名异常java.security.SignatureException:签名长度不正确:得到294但是期望256
所以我成功地生成了PublicKeybu失败verify:
sig.verify(Base64.decode(signature, Base64.DEFAULT) // <- java.security.SignatureException
Run Code Online (Sandbox Code Playgroud)
我知道RSA签名应该是256,在我的情况下我得到了294
String base64PublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3dkBTr2pD2YSqSK2ewlEWwH9Llu0iA4PkwgVOyNRxOsHfrOlqi0Cm51qdNS0aqh/SMZkuQTAroqH3pAr9gVFOiejKRw+ymTaL5wB9+5n1mAbdeO2tv2FDsbawDvp7u6fIBejYt7Dtmih+kcu707fEO58HZWqgzx9qSHmrkMZr6yvHCtAhdBLwSBBjyhPHy7RAwKA+PE+HYVV2UNb5urqIZ9eI1dAv3RHX/xxHVHRJcjnTyMAqBmfFM+o31tp8/1CxGIazVN6HpVk8Qi2uqSS5HdKUu6VnIK8VuAHQbXQn4bG6GXx5Tp0SX1fKrejo7hupNUCgOlqsYHFYxsRkEOi0QIDAQAB";
String signedData = "{\"orderId\":\"GPA.3353-8027-5082-45637\",\"packageName\":\"com.mycompany.testapp\",\"productId\":\"weekly\",\"purchaseTime\":1503578932746,\"purchaseState\":0,\"developerPayload\":\"1502364785372-5918650324956818356\",\"purchaseToken\":\"bfljoelddlibhbibhnbnflej.AO-J1Oz8pvdqCmzz04OBmegRVKEG1stj4su5HH4uc-gzsz_vlhcz7iB_NUZVBNXp3RlTGyIGnsIgOe6bqvqfUIbPC9_CrCngL0EkZp-SBwaRzfn-EgJ32yQ\",\"autoRenewing\":true}";
String signature = "TyVJfHg8OAoW7W4wuJtS4dM//zmyECiNzWa8wuVrXyDOCPirHqxjpNthq23lmAZlxbTXyMNwedMQPr9R8NJtp3VTzGuNlLYBSOERVehmgstXiiwWDBvTNzgWbwimZmFaIiCExMQiPvbXHoWQh2rClFeAd4FfdC15pNf3NqfOGhUAEmieeb572umOo4YoF0l0421pY/JWYXa+2dtO6pcnSHF6gidRDXR66s/enRZUvkB4x9CEHdA862LDKbwOG4Aihh03IRLjD+m/5WNW+w05Q8bNNA6sCzFGVD+qa3IDiSqkiISCpd3UnufePxf3+O2doWjg2mXC5agEDMnNXvhfrw==";
boolean result = DefaultSignatureValidator.validate(base64PublicKey, signedData, signature);
Run Code Online (Sandbox Code Playgroud)
DefaultSignatureValidator.class:
public class DefaultSignatureValidator {
protected static final String KEY_FACTORY_ALGORITHM = "RSA";
protected static final String SIGNATURE_ALGORITHM = "SHA1withRSA"; …Run Code Online (Sandbox Code Playgroud) 这是一个侧栏小工具,可以监听事件点击并返回我的事件信息(更多信息):
<Module>
<ModulePrefs title="subscribeToEvents Test" height="200" author="me"
<Optional feature="google.calendar-0.5.read"/>
</ModulePrefs>
<Content type="html">
<![CDATA[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<body>
<div id="out">No event</div>
<script>
function subscribeEventsCallback(e) {
var html = 'No event';
if (e) {
html = gadgets.json.stringify(e);
}
document.getElementById('out').innerHTML = gadgets.util.escapeString(html);
}
///https://www.google.com/calendar/b/1/render?gadgeturl=http://devblog.meeterapp.com/wp-content/uploads/2015/03/fess_subscribe_to_dates.xml#main_7
// The gadget containers request that we do NOT run any JS inline.
// Instead, register a callback handler.
gadgets.util.registerOnLoadHandler(function() {
google.calendar.read.subscribeToEvents(subscribeEventsCallback);
});
function showEvent(){
google.calendar.showEvent(localEevent.id);
}
</script>
</body>
</html>
]]></Content>
</Module> …Run Code Online (Sandbox Code Playgroud) 我想在maven中发布我的SDK $ ./gradlew uploadArchives
我有这个项目结构:
MyProject
|_ SDK
|_ src
|_ main
|_ java
|_ java files
|_ build.gradle
|_ gradle
|_ gradle-publish.gradle
Run Code Online (Sandbox Code Playgroud)
我使用了以下代码(gradle-publish.gradle)按预期工作:
task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
classifier = 'javadoc'
from androidJavadocs.destinationDir
}
task sourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.sourceFiles
}
uploadArchives {
repositories {
mavenDeployer {
/* ... */
}
}
}
artifacts {
archives sourcesJar
archives androidJavadocsJar
}
Run Code Online (Sandbox Code Playgroud)
现在我主要分裂模块,2:SDK和new_module所以我的项目结构是这样的:
MyProject
|_ SDK
|_ src
|_ main
|_ …Run Code Online (Sandbox Code Playgroud) 这是我的HTML:
<div ng-controller = "myCntrl">
<pre>floor 1: {{Math.floor( value ) }}</pre>
<pre>floor 2: {{value }}</pre>
<pre>floor 3: {{value | number : 0 }}</pre>
<pre>floor 1 from controller: {{newValue }}</pre>
</div>
Run Code Online (Sandbox Code Playgroud)
调节器
app.controller('myCntrl', function ($scope) {
$scope.value = 1233.8435;
$scope.newValue = Math.floor(1233.8435);
});
Run Code Online (Sandbox Code Playgroud)
输出:
floor 1:
floor 2: 1233.8435
floor 3: 1,234
floor 1 from controller: 1233
Run Code Online (Sandbox Code Playgroud)
一般来说,我正在寻找合适的方法1233.
我不想在控制器中调用新方法.
为什么Math.floor没有回报?
谢谢,
演示小提琴
我在iOS中是虚拟的,特别是在私有API中.
我有测试应用程序,现在我需要使用私有API(此应用程序不适用于App Store).
我从iOS-Runtime-Headers下载了生成的标题,下一步是什么?
在/System/Library/我有包含Frameworks,... 的库列表下PrivateFrameworks.
我是否需要将原始框架替换为我复制的框架iOS-Runtime-Headers?
因为我有其他Public API只使用的应用程序,我不想破坏它们.
从发布的链接,他们告诉验证库,例如:
NSBundle *b = [NSBundle
bundleWithPath:@"/System/Library/PrivateFrameworks/GAIA.framework"];
BOOL success = [b load];
Run Code Online (Sandbox Code Playgroud)
但这里的路径指向原始路径.
或者我想念一些东西,
谢谢
我有非常复杂的控制器(约3K行代码)演示仪表板.Controller包含许多图表,网格表等.
例如,我将网格表逻辑移动到下面提到的指令名称wmGridActionItems.注意,它使用父范围:
app.directive('wmGridActionItems', ['$rootScope', '$timeout', function ($rootScope, $timeout) {
return {
restrict: 'E',
templateUrl: 'views/grid-action-items.html',
link: function (scope, elem, attrs) {
// logic goes here
}
};
}]);
Run Code Online (Sandbox Code Playgroud)
和HTML:
<div ui-grid="gridActionItemsOptions"
ui-grid-auto-resize
ui-grid-pagination
ui-grid-selection
ui-grid-auto-resize
ui-grid-resize-columns>
</div>
Run Code Online (Sandbox Code Playgroud)
所以在主控制器HTML中我只写:<wm-grid-action-items></wm-grid-action-items>
我无法在其他地方使用此指令,但至少我将我的BIG控制器划分为几个小指令,这些指令可以帮助我处理仪表板.
我做错了什么?这是好习惯吗?Angular有其他方法可以解决这个问题吗?
编辑
这是我$StateProvider的仪表板视图:
$stateProvider
.state('sidemenu.dash', {
url: '/dshmngr',
abstract: true,
views: {
'content': {
templateUrl: 'views/dashboard/dashboard_manager.html',
controller: 'DashboardMngrCtrl'
}
}
})
.state('sidemenu.dash.main', {
url: '/main',
views: {
'content': {
templateUrl: 'views/dashboard/dashboard-main.html',
controller: 'DashboardNewCtrl'
} …Run Code Online (Sandbox Code Playgroud) ios ×3
java ×3
android ×2
angularjs ×2
javascript ×2
android-pay ×1
ekeventstore ×1
google-play ×1
gradle ×1
gson ×1
json ×1
swift ×1
telnet ×1