假设我有一个左外连接:
from f in Foo
join b in Bar on f.Foo_Id equals b.Foo_Id into g
from result in g.DefaultIfEmpty()
select new { Foo = f, Bar = result }
Run Code Online (Sandbox Code Playgroud)
如何使用扩展方法表达相同的任务?例如
Foo.GroupJoin(Bar, f => f.Foo_Id, b => b.Foo_Id, (f,b) => ???)
.Select(???)
Run Code Online (Sandbox Code Playgroud) 我在ubuntu上使用下面的命令:
curl -v -H "Accept: application/json" -H "Content-type: application/json" -X POST -d '{"foo":"bar"}' http://localhost:8888/
Run Code Online (Sandbox Code Playgroud)
以下是收到的回复:
< HTTP/1.1 200 OK
< Content-Length: 3
< Content-Type: text/html; charset=UTF-8
< Server: TornadoServer/2.1
<
* Connection #0 to host localhost left intact
* Closing connection #0
Run Code Online (Sandbox Code Playgroud)
所以我的问题是; 如何使用curl发布并打印出响应内容正文?
只是想知道是否还有代表C#3.5中的以下代码:
public struct Foo<T> {
public Foo(T item) {
this.Item = item;
}
public T Item { get; set; }
public static explicit operator Foo<U> ( Foo<T> a )
where U : T {
return new Foo<U>((U)a.Item)
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我设法设置了一个使用 Cognito 保护的 API 网关。未经身份验证的用户角色具有应授予其访问网关的访问权限的访问策略。我还设法使用 boto3 从池中检索身份 ID 并获取关联的开放 ID 令牌,以及关联的秘密和访问密钥。
我现在如何使用这些凭据调用网关?有没有办法使用 boto3 来处理对 API 上特定方法的请求签名?
我正在尝试根据系统托盘应用程序中的通知图标单击来切换小窗口的显示.这很容易实现,但是当显示小窗口并且另一个应用程序获得焦点并因此在它前面移动时(z顺序)我希望切换假设现在隐藏了小窗口,即使它的可见性是仍然可见.否则,单击该图标会将windows visiblity设置为隐藏,即使它已隐藏在另一个后面.我已尝试捕获/覆盖激活和非活动方法以保持跟踪,但单击通知图标将始终导致deactive事件首先触发.使用焦点/丢失焦点的类似方法没有 因为窗口似乎认为它仍然具有焦点,即使隐藏在活动使用中的另一个应用程序窗口后面也可以工作.最后,我不得不求助于本机代码和WindowFromPoint方法,如下所示:
using System.Windows.Interop;
using System.Runtime.InteropServices;
using System.Drawing;
[DllImport("user32.dll")]
public static extern IntPtr WindowFromPoint(Point lpPoint);
public static bool IsWindowVisible(System.Windows.Window window) {
WindowInteropHelper win = new WindowInteropHelper(window);
int x = (int)(window.Left + (window.Width / 2));
int y = (int)(window.Top + (window.Height / 2));
Point p = new Point(x, y);
return (win.Handle == WindowFromPoint(p));
}
Run Code Online (Sandbox Code Playgroud)
这将检查在所讨论的窗口中心的坐标处返回的窗口是否与所述窗口匹配.即所讨论的窗口的中心是可见的.
这似乎有点hacky,有没有更好的方法来实现相同的结果?
我一直试图解决这个问题好几天了,非常感谢你对这个问题的任何帮助.
我能够通过将文件的位置作为字符串传递并将其转码为mp3,使用fluent-ffmpeg成功传输存储在Node.js服务器上的mp4音频文件.如果我从同一个文件创建一个文件流并将其传递给fluent-ffmpeg,则它适用于mp3输入文件,但不适用于mp4文件.在mp4文件的情况下,没有抛出错误,它声称流已成功完成,但浏览器中没有播放任何内容.我猜这与存储在mp4文件末尾的元数据有关,但我不知道如何编写代码.当它的位置传递给ffmpeg而不是流时,这是完全相同的文件.当我尝试将流传递给s3上的mp4文件时,再次没有引发错误,但没有任何内容流到浏览器.这并不奇怪,因为ffmpeg不能在本地作为流使用该文件,所以期望它处理来自s3的流是一厢情愿的想法.
如何从s3流式传输mp4文件,而不将其作为文件首先存储在本地?如何在不转码文件的情况下让ffmpeg执行此操作?以下是我目前无法使用的代码.请注意,它尝试将s3文件作为流传递给ffmpeg,并且它还将其转码为mp3,我不想这样做.
.get(function(req,res) {
aws.s3(s3Bucket).getFile(s3Path, function (err, result) {
if (err) {
return next(err);
}
var proc = new ffmpeg(result)
.withAudioCodec('libmp3lame')
.format('mp3')
.on('error', function (err, stdout, stderr) {
console.log('an error happened: ' + err.message);
console.log('ffmpeg stdout: ' + stdout);
console.log('ffmpeg stderr: ' + stderr);
})
.on('end', function () {
console.log('Processing finished !');
})
.on('progress', function (progress) {
console.log('Processing: ' + progress.percent + '% done');
})
.pipe(res, {end: true});
});
});
Run Code Online (Sandbox Code Playgroud)
这是在调用aws.s3时使用knox库...我也尝试使用Node.js的标准aws sdk编写它,如下所示,但我得到与上面相同的结果.
var AWS = require('aws-sdk');
var s3 = …
Run Code Online (Sandbox Code Playgroud) 使用3的Kafka集群和相同的Zookeeper集群,我提出了一个分布式连接器节点.此节点使用单个任务成功运行.然后我提出了第二个连接器,这似乎运行,因为任务中的一些代码肯定会运行.然而,它似乎没有活着(尽管没有抛出错误,由于缺乏预期的活动而没有保持活着,而第一个连接器继续正常运行).当我调用URL时http://localhost:8083/connectors/mqtt/tasks
,在每个连接器节点上,它告诉我连接器有一个任务.我希望这是两个任务,每个节点/工作一个任务.(目前工作人员配置说,tasks.max = 1
但我也尝试将其设置为3.
当我尝试启动第三个连接器时,我收到错误:
"POST /connectors HTTP/1.1" 500 90 5
(org.apache.kafka.connect.runtime.rest.RestServer:60)
ERROR IO error forwarding REST request:
(org.apache.kafka.connect.runtime.rest.RestServer:241)
java.net.ConnectException: Connection refused
Run Code Online (Sandbox Code Playgroud)
尝试再次从shell调用连接器POST方法返回错误:
{"error_code":500,"message":"IO Error trying to forward REST request:
Connection refused"}
Run Code Online (Sandbox Code Playgroud)
我还尝试升级到今天发布的Apache Kafka 0.10.1.1.我还在看问题.每个连接器都运行在由单个映像定义的隔离Docker容器上.它们应该完全相同.
问题可能是我正在尝试http://localhost:8083/connectors
对每个工作程序运行POST请求,当我只需要在单个工作程序上运行一次,然后该连接器的任务将自动分发给其他工作程序.如果是这种情况,我该如何分配任务?我目前将max设置为3,但只有一个似乎在一个worker上运行.
我最终使用与Yuri建议的方法基本相同的方式运行.我给每个工作者一个唯一的组ID,然后给每个连接器任务指定相同的名称.这允许三个连接器及其单个任务共享一个偏移量,因此在接收器连接器的情况下,它们从Kafka消耗的消息不会重复.它们基本上作为独立连接器运行,因为工作人员具有不同的组ID,因此不会相互通信.
如果连接器工作程序具有相同的组ID,则无法添加多个具有相同名称的连接器.如果为连接器指定不同的名称,它们将具有不同的偏移量并消耗重复的消息.如果同一组中有三个工作人员,一个连接器和三个任务,理论上理论情况是任务共享一个偏移量,工作人员确保任务始终在运行并且分布均匀(每个任务都使用一个唯一的集合分区).实际上,连接器框架不会创建多个任务,即使tasks.max设置为3,主题任务消耗时也有25个分区.
如果有人知道我为什么会看到这种行为,请告诉我.
在我的数据库中,我有一个用户表,通过多对多表连接到学校。一个学校有很多工作岗位。我正在尝试为特定用户返回所有学校及其工作。到目前为止,这是我的代码:
var user User
err := db.Where("id = ?", userID).Preload("Schools")
.Preload("Schools.Jobs", func(db *gorm.DB) *gorm.DB {
return db.Order("job.job_reference DESC")
}).First(&user).Error
return &user.Schools, err
Run Code Online (Sandbox Code Playgroud)
Gorm 然后执行以下查询:
SELECT * FROM `user` WHERE (id = 'foo') ORDER BY `user`.`id` ASC LIMIT 1
SELECT * FROM `school`
INNER JOIN `user_school` ON `user_school`.`school_id` = `school`.`id`
WHERE (`user_school`.`user_id` IN ('foo'))
SELECT * FROM `job` WHERE (`school_id` IN ('1','2'))
ORDER BY job.job_reference DESC,`job`.`id` ASC
Run Code Online (Sandbox Code Playgroud)
前两个生成的 SQL 查询完全符合我的预期,但是最后一个查询尝试按我提供的条件进行排序,并按 ID 进行默认排序。如果我删除特定的排序指令,它仍会尝试按 ID 排序。我怎样才能阻止它这样做?
请在标记为重复之前阅读,我已经搜索了我的具体问题很长一段时间的答案,但没有找到答案.
我的Eclipse(Luna 4.4.1)IDE拒绝更改文本编辑器的背景颜色.请看截图.IDE启动时似乎是黑色,然后在几秒钟后切换为白色.
我试过(在更改之间重新启动程序):
我正在使用PyDev插件,但我也尝试过切换到Java和其他视角并遇到同样的问题.我已经尝试安装Moonrise主题,卸载并重新安装相同的Eclipse Color Theme插件.
有没有人见过这个并找到解决方案?
更新:
如果我将IDE更改为Java透视图并打开Java文件,我仍然会有恼人的白色背景,但方式略有不同:
我已经卸载了月出主题,我只是在这里使用黑暗主题.我认为这排除了Pydev对颜色的影响,它必须是一般编辑层面的东西.尽管如此,我还是为普通编辑器将背景颜色设置为黑色.
主要更新 - 该错误有些可重复
好的,所以我还没有解决问题,但我已经弄明白是什么引发了它!当我打开Window> Customize Perspective时,后台切换到正确的黑色样式,然后保持这种状态,直到我重新启动IDE.这不是我改变任何设置,只是打开对话框的行为.但为什么?
有没有办法使用CompiledQuery.Compile方法编译与IQueryable相关联的表达式?目前我有一个IQueryable,后面有一个非常大的表达式树.IQueryable是使用几种方法构建的,每种方法都提供组件.例如,两个方法可以返回IQueryables,然后在第三个方法中连接.出于这个原因,我无法在compile()方法调用中显式定义整个表达式.
我希望将表达式作为someIQueryable.Expression传递给compile方法,但是这个表达式不是编译方法所需的形式.如果我尝试通过将查询直接放入compile方法来解决这个问题,例如:
var foo = CompiledQuery.Compile<DataContext, IQueryable<User>>(dc => dc.getUsers());
var bar = foo(this);
Run Code Online (Sandbox Code Playgroud)
我在datacontext中创建调用表单,我得到一个错误,说"getUsers未映射为存储过程或用户定义的函数".我再次不能将getUsers方法的内容复制到我进行编译调用的地方,因为它反过来使用其他方法.
有没有办法将从"getUsers"返回的IQueryable上的Expression传递给Compile方法?
更新 我试图使用以下代码强制我在系统上的意愿:
var phony = Expression.Lambda<Func<DataContext, IQueryable<User>>>(
getUsers().Expression, Expression.Parameter(typeof(DataContext), "dc"));
Func<DataContext, IQueryable<User>> wishful = CompiledQuery.Compile<DataContext, IQueryable<User>>(phony);
var foo = wishful(this);
Run Code Online (Sandbox Code Playgroud)
foo最终成为:
{System.Data.Linq.SqlClient.SqlProvider + OneTimeEnumerable`1 [Model.Entities.User]}
我没有选择在foo中查看结果,而不是提供扩展结果并运行查询我只看到消息"操作可能破坏运行时的稳定性".
我只需要找到一种方法让sql字符串只生成一次并用作后续请求的参数化命令,我可以在数据上下文中使用GetCommand方法手动完成,但是我必须显式设置所有参数并且自己进行对象映射,考虑到这个特定查询的复杂性,这是几百行代码.
更新
John Rusk提供了最有用的信息,所以我在这个上获得了胜利.然而,需要进行一些额外的调整,并且在此过程中我遇到了一些其他问题,所以我认为我会在答案上'展开'.首先,'操作可能会使运行时不稳定'错误不是由于表达式的编译,实际上是因为表达式树中有一些深入.在某些地方,我需要调用.Cast<T>()
方法来正式投射项目,即使它们的类型正确.在没有详细说明的情况下,当几个表达式组合成一个树并且每个分支可以返回不同的类型时,基本上需要这个,这些类型都是公共类的子类型.
解决了destabalizing问题后,我回到了编译问题.John的扩展解决方案几乎就在那里.它在树中查找方法调用表达式,并尝试将它们解析为方法通常返回的基础表达式.我对表达式的引用不是由方法调用提供的,而是由属性提供的.所以我需要修改执行扩展的表达式访问者以包含这些类型:
protected override Expression VisitMemberAccess(MemberExpression m) {
if(m.Method.DeclaringType == typeof(ExpressionExtensions)) {
return new ExpressionExpander().Visit((Expression)(((System.Reflection.PropertyInfo)m.Member).GetValue(null, null)));
}
return base.VisitMemberAccess(m);
}
Run Code Online (Sandbox Code Playgroud)
这种方法可能并不适合所有情况,但它应该帮助任何发现自己陷入同样困境的人.
c# ×2
linq-to-sql ×2
.net ×1
amazon-s3 ×1
apache-kafka ×1
appearance ×1
boto3 ×1
casting ×1
curl ×1
docker ×1
eclipse ×1
ffmpeg ×1
generics ×1
go ×1
go-gorm ×1
lambda ×1
macos ×1
mysql ×1
node.js ×1
performance ×1
python ×1
python-3.x ×1
streaming ×1
themes ×1
ubuntu ×1
visible ×1
window ×1
wpf ×1
z-order ×1