我有一个包含很多子模块的maven项目.我正在寻找的是获取聚合POM的/ target /目录中包含的子模块生成的所有.jar文件的方法,以便以后可以方便地使用它们.
我正在做的基本版本:
Prj1/pom.xml => prj1/target/proj1.jar (and classes/generated-sources/etc)
Prj2/pom.xml => prj2/target/proj2.jar
Main/pom.xml =>
main/target/proj1.jar
main/target/proj2.jar
... classes/generated-sources not needed at all,
... but they could be combined here. I assume they will be
Run Code Online (Sandbox Code Playgroud)
我一直在阅读,并使用SO的一些建议.到目前为止,我还没有找到办法做到这一点,但我确信它就在那里.
编辑:
对于所有包含的子程序,我已经放弃了以简单的方式使用它.到目前为止,我得到的最佳答案是使用dependancy插件手动指定(再次)要包含的每个子模块.我们的想法是能够轻松地为数十个客户配置POM,只需包含必要的模块,然后将其神奇地粘贴在一个位置的所有子模块的罐子中.Maven非常好,当你没有做太多时,但是当你尝试时,角括号税是不可思议的.
我仍然觉得奇怪的是,这些看似标准的任务(从SO上提出的问题判断,以及任何正常项目会做什么)都是如此困难.maven3更好吗?
对于重载的New或Factory样式方法,嵌套构造函数调用(从设计POV)是一个好主意吗?这主要适用于简单的构造函数,其中每个重载构建在前一个构建器上.
MyClass( arg1 ) {
_arg1 = arg1;
_otherField = true;
_color="Blue"
}
MyClass( arg1, arg2) : this(arg1) {
_arg2 = arg2
}
MyClass( arg1, arg2, arg3) : this(arg1, ar2) {
_arg3 = arg3;
}
Run Code Online (Sandbox Code Playgroud)
或者使用工厂方法:
static NewInstance(arg1 ) {
_arg1 = arg1;
}
static NewInstance(arg1, arg2) {
f = NewInstance(arg1);
f._arg2 = arg2;
}
//... and so on
Run Code Online (Sandbox Code Playgroud)
我可以看到双方都有一些弊端
所以,这样做是个好主意,还是让我为一些我没有看到的问题做好准备.出于某种原因,我感到不安,主要是因为它分担了初始化的责任.
编辑: @Jon Skeet:我现在明白为什么这太困扰我了.我倒退了!我写了整篇文章,甚至没有注意到,它只是闻到了.我所拥有的大多数其他情况(我写的),按你推荐的方式做,但这肯定不是我这样做的唯一一个.我注意到我做得比较复杂,但是我看起来很简单. 我喜欢微编辑.我也喜欢首字母缩略词!
当创建一个new Date使用号码为部分对象,我回来的值精确1个月未来我把在"月"的价值.
new Date(2012, 05, 17, 00, 00, 00)
Sun Jun 17 2012 00:00:00 GMT+0800 (HKT) // june?!
Run Code Online (Sandbox Code Playgroud)
但是,正常解析完全相同的字符串会返回正确的时间:
new Date("2012-05-17 00:00:00")
Thu May 17 2012 00:00:00 GMT+0800 (HKT)
Run Code Online (Sandbox Code Playgroud)
我在ie/ff/chrome中得到了相同的结果.删除小时/分钟/秒没有任何效果.我可以通过在设置月份之前减去一个来解决它,但我只是改为将日期写为字符串.
编辑: 字符串解析在IE中不起作用.我不知道我做了什么,但我发誓我做了那件事.多数民众赞成.为什么我首先避免它.我现在转而使用moment.js.
啊,现在我明白了.就像常规的java日期一样,我很少编写代码,甚至很少,甚至总是用库(joda等).无论如何,这是多么可怕的想法.以下是双关语问题:为什么Java Calendar中的1月 0月?
为什么会这样?
前言: 我知道这是一种不寻常/不正确的方法.我可以用"真正的"ShowDialog(),后台工作者/线程等来做到这一点.我不是那样寻求帮助的; 我正在努力做我在这里描述的具体内容,即使它很难看.如果由于X原因这是不可能的,请告诉我.
我为一些长期运行的操作创建了一个奇特的进度对话框.我需要在新线程上显示此对话框,同时在调用(大多数情况下为UI)线程上继续处理.
这有3个真正的要求:
我看起来像这样(到目前为止工作得很好,就运行而言,除了上面的那些问题):
Using ... ShowNewProgressDialogOnNewThread() ...
Logic
UpdateProgress() //static
Logic
UpdateProgress() //static, uses Invoke() to call dialog
...
End Using // destroys the form, etc
Run Code Online (Sandbox Code Playgroud)
我尝试了几种方法来做到这一点:
关于如何使这项工作的任何线索或智慧?
我有一个包含大量数据的表,我们特别关心这个date领域.原因是数据量上升了大约30倍,旧的方式很快就会崩溃.我希望您可以帮助我优化需求的查询:
例如,当前表包含5秒(+/-一点)间隔的数据.我需要对该表进行采样并获得最接近30秒间隔的记录.
我现在所做的工作得很好.我只是好奇是否有办法更优化它.如果我能在Linq To SQL中做到这一点,那也是很好的.考虑到日期值的数量(约200万行最小值),我甚至对索引的建议感兴趣.
declare @st datetime ; set @st = '2012-01-31 05:05:00';
declare @end datetime ; set @end = '2012-01-31 05:10:00';
select distinct
log.* -- id,
from
dbo.fn_GenerateDateSteps(@st, @end, 30) as d
inner join lotsOfLogData log on l.Id = (
select top 1 e.[Id]
from
lotsOfLogData as log -- contains data in 5 second intervals
where
log.stationId = 1000
-- search for dates in a certain range
AND utcTime between DateAdd(s, -10, dt) …Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来覆盖EF中的SaveChanges方法/过程.我们需要以某种方式获取SQL,阻止正常的更新/删除/插入执行,并使用生成的SQL来运行我们的自定义过程.
SaveChanges()正常打电话.让EF生成SQL.SaveChanges(或只返回0)我看到的唯一真正的问题是从SaveChanges方法内部抓取SQL .我们要做的就是这样,理想情况......
我们使用MVC4和EF5来对抗3个字母的首字母缩略词数据库.这里的要点是避免在每个更新操作中手动编写SQL,并依靠EF为我们生成所有这些.由于该过程采用直接SQL
是的,这不是一个好方法(单一程序),但我们别无选择.没有任何.如果我们不能这样做,那么我们将需要编写自定义sql.也许我们可以采用另一种方式来实现这一点,我们可以通过上下文并自己完成工作?然后我们可以审核从未调用'SaveChanges()':D
解
我用它EFTracingProvider作为起点来创建我自己的提供者(以及其他一些东西).您也可以通过将所有内容放在Entities类中并处理事件来仅使用EFTracingProvider.您将看不到修改后的SQL,因为此事件将在此之后触发,因此您需要自己进行日志记录.这已被剥离,以更好地适应网站:)
public class MyEntities : MyBaseEntities
{
public MyEntities(): this(connectionString: "name=MyBaseEntities") {}
public MyEntities(string connectionString)
: base(MakeConnection(connectionString, "EFTracingProvider")) {}
/// <summary>
/// Insert the wrapped connection by calling the base toolkit.
private static EntityConnection MakeConnection(string connectionString, params string[] providers)
{
var conn = EntityConnectionWrapperUtils.CreateEntityConnectionWithWrappers(
connectionString,
providers
);
//get the tracing connection, so that we can attach event …Run Code Online (Sandbox Code Playgroud) 我正在将 Django 应用程序从 2.2.7 升级到 3.1.3。该应用程序使用 Postgres 12 和 psycopg2 2.8.6。
我按照说明更改了对 的所有django.contrib.postgres.fields.JSONField引用django.db.models.JSONField,并进行了迁移。这不会对我的架构产生任何更改(这很好。)
但是,当我执行原始查询时,这些jsonb列的数据在某些时候以文本形式返回,或转换为文本。直接使用Model.objects.get(...).
import os, django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "big_old_project.settings")
django.setup()
with connection.cursor() as c:
c.execute("select name, data from tbl where name=%s", ("rex",))
print(c.description)
for row in c.fetchall():
for col in row:
print(f"{type(col)} => {col!r}")
(Column(name='name', type_code=1043), Column(name='data', type_code=3802))
<class 'str'> => 'rex'
<class 'str'> => '{"toy": "bone"}'
Run Code Online (Sandbox Code Playgroud)
[编辑] 使用原始连接给出了预期的结果:
conn = psycopg2.connect("dbname=db user=x password=z")
with conn.cursor() as c:
...
<class 'str'> => …Run Code Online (Sandbox Code Playgroud) 当另一个字段中的值发生变化时,有没有办法在一个字段上触发特定的 jquery-unobtrusive规则?
我有一个带有两个日期字段的表单(比如开始/结束),验证end必须大于start.在已经设置的更改end后的简单情况下,这可以正常工作start.不做的是允许是:
end第一,然后设置startstart在两者都已设置之后进行更改,并违反约束服务器端验证当然会捕获它,但end即使在修复后仍然设置错误仍然很糟糕start,或者当值in end更改为无效值时没有出现错误.触发特定规则的原因是我不希望在用户有机会输入值之前触发相同字段上的规则required或date格式化规则.表格开始"干净".但是,如果这是不可能的,那么解雇所有规则是可以的.
很抱歉没有代码示例,但我甚至不知道从哪里开始.
更新:
我目前所做的是在模型中挖掘(因为这是一个asp.net mvc项目),找到属性,并直接读取它的属性.
var controllerCtx = ViewContext.Controller.ControllerContext;
var da = ViewData.ModelMetadata.GetValidators(controllerCtx)
.SelectMany(x => x.GetClientValidationRules())
.Where(x => x.ValidationType == "isdateafter")
.FirstOrDefault();
var otherid = da == null ? "" : da.ValidationParameters["propertytested"];
Run Code Online (Sandbox Code Playgroud)
然后在普通的HTML部分中,我start对它进行测试并查看它是否是日期选择器,然后连接基本检查,并启动所有验证规则.由于规则不多,我只是end在运行之前检查字段中是否有值.我想使用下面的巧妙解决方案,并在本周有一点空闲时间时给它一个机会.
@if (otherid != "") {
<text>
var other = $("#@otherid");
if (other && other.hasClass('hasDatepicker')) { …Run Code Online (Sandbox Code Playgroud) 我很高兴地使用地图中的地理编码API多年,没有问题.最近我为不同的环境制作了更多的密钥,并决定向它们添加API限制是个好主意.
当我添加这些API限制时,我突然开始获得REQUEST_DENIED.
https://maps.googleapis.com/maps/api/geocode/json?latlng=={lt},{ln}&key={key}
This IP, site or mobile application is not authorized to use this API key, ...
REQUEST_DENIED
Run Code Online (Sandbox Code Playgroud)
删除它们允许再次调用API.
这是键的设置.我们只启用了2个API,并且它们都添加到此密钥中.在此配置中,我无法调用Geocoding API.当我删除限制时,Key再次工作,没问题.我没有设置任何其他应用限制.
有没有办法设置单元格Value的&属性Formula,以便它们保留到写入的 XLSX 文件中?
由于EPPlus不计算公式(它依赖excel来计算),所以我为用户预先计算结果。这样,如果他们不打开文件,而是重新上传文件,则“值”不为空。公式非常简单。
注意: sheet.SetValue()和.Value都重置类的 Formula 属性ExcelCell,因此.Value必须首先调用。请参阅源代码以ExcelCell.SetRichText()了解它的发生。
以下是测试用例中几乎完全相同的代码:
var package = new ExcelPackage(); // and setup code
var sheet = package.Workbook.Worksheets.First();
sheet.Cells["A2"].Value = 10;
sheet.Cells["A2"].Formula = "=A1 * 3";
// Cell is OK now. shows both ".Value" and ".Formula"
using (var s = new MemoryStream()) {
package.Save(s);
var newPackage = new ExcelPackage(s);
var newSheet = newPackage.Workbook.Worksheets.First();
var cell = newSheet.Cells["A2"];
// cell.Value == null
// …Run Code Online (Sandbox Code Playgroud) 我想从Windows shell使用HTTPie发送POST请求
JSON 输入看起来像:
{
"name": "pub1",
"email": "support@pub1.com",
"address": {
"city": "new york",
"pincode": 12345
}
}
Run Code Online (Sandbox Code Playgroud)
我努力了:
http -v POST http://127.0.0.1:8000/publication/ name=pub1 email=support@pub1.com address:="{"city":"new york", "pincode":12345}"
Run Code Online (Sandbox Code Playgroud)
它给出以下错误:
http: error: "address:={city: new": Expecting property name enclosed in double quotes: line 1 column 2 (char 1)
Run Code Online (Sandbox Code Playgroud)
我使用Postman及其工作来完成此操作,但我想知道如何使用httpie 来完成此操作?
我还尝试了 SOF 和 GitHub 上的可用解决方案,但无法找出问题所在。
在.net中,有没有办法检测某个单词是否是给定.net语言中的关键字?
我正在为这个项目使用一个相当简单的代码生成器,我想开始自动化它.现在我手工完成每一个,所以解决出现的任何问题都很容易.但是,一旦这种情况自动开始,我将需要一种方法来检测我需要用作标识符的单词是否是关键字.我仍然可以使用它,我只需要正确引用它.
我知道我可以简单地引用我生成的所有内容,但我想保持生成的代码很漂亮:)
我需要引用的一类例子:
vb: Public [Class] As String = "CLASS"
c#: public String @class = "CLASS";
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的定时循环,用户..最多.但是,当我在块中使用循环变量(这里作为索引)时,它似乎会导致变量类型发生变化.如果我不触摸循环变量,那么秒表没有问题.
let sw = Stopwatch::start_new();
let all_data = vec!["a", "b", "c", "d", "e"];
let iters = 2;
for x in 0..iters {
println!("Message: {:?}", all_data[x]);
}
println!("Thing took {}ms per", sw.elapsed_ms() / iters);
Run Code Online (Sandbox Code Playgroud)
打印出已用时间时,这会给我一个类型错误.它似乎已改为usize?
我可以通过使用来解决这个问题all_data[x as usize].Rust实际上是以某种方式更改实际变量,还是类型推断只是采用最后一次使用并假设该类型?
src/main.rs:95:55: 95:58 error: mismatched types [E0308]
src/main.rs:95 println!("Thing took {}ms per", sw.elapsed_ms() / iters);
^~~
<std macros>:2:27: 2:58 note: in this expansion of format_args!
<std macros>:3:1: 3:54 note: in this expansion of print! …Run Code Online (Sandbox Code Playgroud) c# ×2
.net ×1
cmd ×1
dialog ×1
django ×1
epplus ×1
excel ×1
google-maps ×1
httpie ×1
javascript ×1
jquery ×1
json ×1
maven ×1
multi-module ×1
postgresql ×1
python ×1
rust ×1
sql-server ×1
t-sql ×1
vb.net ×1
winforms ×1