我有一个Java服务器应用程序,它使用Jackson通过反射API一般地序列化DTO.例如,对于此DTO界面:
package com.acme.library;
public interface Book {
com.acme.library.Author getAuthor();
String getTitle();
}
Run Code Online (Sandbox Code Playgroud)
从这个界面的POJO实现,Jackson将一般序列化以下实体:
{
"author": { "name": "F. Scott Fitzgerald"},
"title": "The Great Gatsby"
}
Run Code Online (Sandbox Code Playgroud)
将使用我的TypeScript应用程序(基于AngularJS)的HTTP GET接收此有效负载:
$http.get("http://localhost/books/0743273567")
.success((book: Book) => { ... });
Run Code Online (Sandbox Code Playgroud)
因此我能够使用TypeScript的强类型性质,我发现自己手工编写以下的typescript接口:
module com.acme.library {
export interface Book {
author: com.acme.library.Author;
title: String;
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我必须保留这个相同界面的两个副本 - 这最多是麻烦的.这变得特别讨厌,因为我想在两个接口上都有相同的javadoc/jsdoc注释,这涉及整个复制和粘贴堆.
我想找到一种自动化这个过程的机制.
Java是我的主要开发语言.因此,我想找到一些能够从Java接口声明(通过反射API?)转换到相关TypeScript接口的工具.
我在这个领域发现的唯一工具是NPM包ts-java
.但是,这对我的用例来说太重了.它增加了从对象层次结构的方法给每个接口,例如hashCode()
,wait()
,getClass()
等.
我有一个使用C#4.0编写的相对较小的ASP.NET项目.
我想知道是否有人设法将这样的项目移植到Linux上的网络服务器上运行,我能找到的最新信息似乎只支持ASP.Net 2.0 - 配置和运行Mono ASP.NET 3.5(AJAX.NET) )在Linux计算机上
该项目使用LINQ-to-SQL作为整个数据访问层,我知道Mono本身支持LINQ,所以我认为它应该有效.
我只是想知道在开始之前是否完全浪费时间.
谢谢.
我安装了nodejs并执行了以下操作:
npm install -g phonegap
phonegap create <app path>
cd <app path>
phonegap run android
Run Code Online (Sandbox Code Playgroud)
当我执行run android命令时,我得到以下错误:
An error occurred during creation of android-sub project. The system cannot find the project specified.
Run Code Online (Sandbox Code Playgroud)
不知道这是从哪里来的.
任何线索.
谢谢
在平台安全性的最后一节中,它提到了一种在PhoneGap应用程序中保护源代码的方法.
逆向工程是很多人使用PhoneGap的一个问题,因为人们可以简单地打开应用程序二进制文件并查看应用程序的JavaScript源代码.甚至可以添加恶意JavaScript代码,重新打包应用程序并将其重新提交到应用商店/市场以尝试应用网络钓鱼.无论是用PhoneGap还是其他方式编写,这种做法都可以在任何应用程序中进行,因为对Java或Objective-C进行反编译也是一个类似的简单任务.
PhoneGap实际上可以解决这个安全问题,因为应用程序开发人员可以在运行时下载其应用程序中的JavaScript,运行该JavaScript,并在应用程序关闭时将其删除.这样,当设备处于静止状态时,源代码永远不会出现在设备上.使用Java或Objective-C这是一个更加困难的前景,更不用说App Store中围绕动态运行Objective-C代码的限制了.
但是,我想知道如何防止他人在服务器上下载我的源代码?
现在我们有一堆数据库服务器,其中运行的存储过程记录很少,并且不存在.
当对一个进行更改时,没有日志,并且很难弄清楚为什么突然失效的东西.
我们最近使用SVN切换到使用正确的版本控制,所以我希望将这些存储过程添加到版本控制中.
我们是.Net商店,我知道存在一个Database
项目类型.这会是一个好方法吗?
或者,我可以将存储过程保存为文本文件并对其进行操作,但我想知道这样做所涉及的令人讨厌的部署步骤.
我有以下表定义:
CREATE TABLE [Car]
(
CarID int NOT NULL PRIMARY KEY IDENTITY(1,1),
FirstColorID int FOREIGN KEY REFERENCES Colors(ColorID),
SecondColorID int FOREIGN KEY REFERENCES Colors(ColorID),
UNIQUE(FirstColorID, SecondColorID)
)
Run Code Online (Sandbox Code Playgroud)
我希望两个颜色列是唯一的,无论它们以何种组合出现。
例如尝试:
INSERT INTO Car (FirstColorID, SecondColorID) VALUES (1, 2); --should succeed
Run Code Online (Sandbox Code Playgroud)
但在第一条记录存在且颜色反转后尝试相同的操作应该会失败:
INSERT INTO Car (FirstColorID, SecondColorID) VALUES (2, 1); --should violate constraint/check
Run Code Online (Sandbox Code Playgroud)
我使用高级代码解决了这个问题,但我宁愿直接在数据库中强制执行约束,最好不涉及触发器之类的东西。
谢谢。
我有两个名称相同的控制器,其中一个位于"Admin"区域,另一个位于默认区域(我相信它可以解析为区域的空字符串).
以下电话:
HtmlHelper.Action("Action", "DuplicateController", new { parameterValue = "test" } );
Run Code Online (Sandbox Code Playgroud)
似乎无法解决我ProjectA.Controllers.DuplicateController
和之间的区别ProjectB.Controllers.DuplicateController
,即使我通过添加区域将其指定为"",如下所示:
HtmlHelper.Action("Action", "DuplicateController", new { parameterValue = "test", area = "" } );
Run Code Online (Sandbox Code Playgroud)
我知道我应该能够通过在应用程序启动时注册它们来指定路由来解决这个问题,但是是否可以直接向控制器指定一个完全限定的命名空间,我知道我需要在action方法中调用它?
例如以下内容可以解决我的问题:
HtmlHelper.Action("Action", "ProjectB.Controllers.DuplicateController", new { parameterValue = "test" } );
Run Code Online (Sandbox Code Playgroud) 我是Windows用户,并希望使用我自己的EBS Windows AMI使用现场实例.为此我遵循了以下步骤:
我试图实现这个目标并创建/删除了许多volums,实例,快照但仍然不成功.没有其他人有解决这个问题的方法吗?
谢谢
尝试使用pdfbox创建带有可由用户或计算机填写的表单字段的pdf.到目前为止我的代码看起来像这样:
PDDocument doc = new PDDDocument();
PDPage page = new PDPage();
doc.addPage(page)
PDAcroForm = new PDAcroForm(doc)
doc.documentCatalog.setAcroForm(acroForm)
COSDictionary cosDict = new COSDictionary()
PDTextbox textField = new PDTextbox(acroForm, cosDict)
PDRectangle rect = new PDRectangle()
rect.setLowerLeftX((float) 250)
rect.setLowerLeftY((float) 125)
rect.setUpperRightX((float) 500)
rect.setUpperRightY((float) 75)
textField.getWidget().setRectangle(rect)
acroForm.getFields.add(textField)
page.getAnnotations().add(textField)
page.getAnnotations().add(textField.getWidget())
Run Code Online (Sandbox Code Playgroud) 我有两个表达式:
public static Expression<Func<int, bool>> IsDivisibleByFive() {
return (x) => x % 5 == 0;
}
Run Code Online (Sandbox Code Playgroud)
和
public static Expression<Func<int, bool>> StartsWithOne() {
return (x) => x.ToString().StartsWith("1");
}
Run Code Online (Sandbox Code Playgroud)
我想创建一个同时应用两个表达式的新表达式(我的代码在不同的组合中使用相同的表达式):
public static Expression<Func<int, bool>> IsValidExpression() {
return (x) => IsDivisibleByFive(x) && StartsWithOne(x);
}
Run Code Online (Sandbox Code Playgroud)
然后做:
public static class IntegerExtensions
{
public static bool IsValid(this int self)
{
return IsValidExpression().Compile()(self);
}
}
Run Code Online (Sandbox Code Playgroud)
在我的代码中:
if (32.IsValid()) {
//do something
}
Run Code Online (Sandbox Code Playgroud)
我有很多这样的表达式,我想要定义一次而不是在整个地方复制代码.
谢谢.
我在一台Windows Server上有大约10个不同的.NET项目,主要是.NET 4.0,但有些是.NET 2.0
其中一些项目是asp.net,一些是后台实用程序/服务.
这些项目与我们基础架构中的100多个不同数据库进行交互.他们用来做的连接字符串每月至少更改几次.
这里的问题是忘记将ConnectionString放在其中一个项目中会导致很多问题,并且许多不同的程序员会一直将新项目/更新部署到服务器.
我对解决方案的新尝试是覆盖所有项目中的System.ConfigurationManager类,并将其替换为我自己的实现,该实现从我可以维护的共享配置文件中读取.然后我只需重新编译每个项目并进行部署.
我还可以尝试在所有项目之间共享的machine.config文件中维护ConnectionStrings,但是我必须为项目使用的每个版本的.NET框架执行此操作,该框架至少有三个,并且在这个文件好像很危险.
有人建议采用哪种方式进行?
谢谢.
我有一个实用程序:
该实用程序还记录任何失败的命令.
然而,数据库中的最终数据似乎是错误/陈旧的,即使我的实用程序报告没有失败的更新和没有失败的命令.
我知道第一个也是最明显的罪魁祸首是我对实用程序本身的编程中出现了某种逻辑或运行时错误,但我只需要知道SQL Server可能会报告至少有一行受到影响而且不适用改变.
如果它有帮助,实用程序似乎总是正确执行相同数量的命令,并且最终的过时/错误数据总是相同的,即它似乎正确执行了一些成功查询数据库的命令,然后失败.
谢谢.
编辑:
我还应该注意到,这个实用程序在4个不同的生产服务器上展示了这种行为,每个服务器都有自己专用的本地数据库服务器,而这些是具有8-16 GB RAM的强大机器,每个服务器由专业系统管理员管理.
c# ×4
.net ×3
java ×2
sql-server ×2
amazon-ec2 ×1
android ×1
asp.net ×1
asp.net-mvc ×1
cordova ×1
database ×1
expression ×1
html-helper ×1
javascript ×1
lambda ×1
linq ×1
linux ×1
mono ×1
obfuscation ×1
pdfbox ×1
routes ×1
security ×1
sql ×1
svn ×1
typescript ×1