小编Sea*_*son的帖子

如何让 gRPC 在 Unity 游戏客户端 (c#/.NET) 和基于 Tonic (rust) 的服务器之间工作

所以我有一个使用Tonic crate用 Rust 编写的 gRPC 服务器。我已经编写了所有原型文件,并且可以使用基于 Tonic 的客户端和grpcurl发出请求,因此服务器端没有问题。

\n

我有一个基于 Unity 3D 的游戏,我想将其用作客户端。Unity 使用 C#/.NET/Mono,因此理论上应该很容易让 gRPC 客户端工作。事实证明这并不那么容易。

\n

根据互联网(特别是https://grpc.io/blog/grpc-csharp-future/),我们应该使用Grpc.Net.Client包。因此,我使用非常有用的NuGetForUnity工具将其放入 Unity 中。

\n

我收到以下错误,至少信息非常丰富

\n
\n

PlatformNotSupportedException:gRPC 需要在不支持 HTTP/2 上的 gRPC 的 .NET 实现上进行额外配置。必须使用 GrpcChannelOptions.HttpHandler 指定 HTTP 提供程序。配置的 HTTP 提供程序必须支持 HTTP/2 或配置为使用 gRPC-Web。有关详细信息,请参阅https://aka.ms/aspnet/grpc/netstandard

\n
\n

经过一番谷歌搜索后,我发现了以下链接,这些链接清楚地表明 Unity/Xamarin 和其他链接不支持 Grpc.Net.Client。

\n

https://github.com/grpc/grpc-dotnet/issues/1309#issuecomment-850303082

\n

https://learn.microsoft.com/en-us/aspnet/core/grpc/netstandard?view=aspnetcore-6.0

\n

总之:

\n
\n

不支持 HTTP/2 的 .NET 实现(例如 UWP、Xamarin 和 Unity)可以使用 gRPC-Web 作为替代方案。

\n
\n …

c# unity-game-engine rust grpc grpc-web

9
推荐指数
1
解决办法
5534
查看次数

如何在Xcode 10中设置以前的基本SDK?

在Xcode的早期版本中,我可以将基本SDK设置为当前的iOS版本,将部署目标设置为早期的版本,如iOS 7 TechTalk的第2部分:会话构建现代应用程序中的以下幻灯片所示:

iOS 7 TechTalk,会话“架构现代应用程序”,第2部分

这个堆栈溢出问题很好地阐述了基本SDK与部署目标。

xcode中的Base SDK,iOS部署目标,Target和Project的含义是什么

但是,现在,当我查看Xcode中的基本SDK配置字段时,我只会看到“ iOS”(这是“ iphoneos”的别名)。

根据https://developer.apple.com/ios/submit/

从2019年3月开始,提交给App Store的所有iOS应用程序都必须使用iOS 12.1 SDK或更高版本构建,并支持iPhone XS Max或12.9英寸iPad Pro(第三代)的全屏设计。

这让我感到担心,因为似乎我无法再将目标指向旧版本的iOS。

我已经做了很多研究,似乎无法确切地确定是否还有一种使用12.1 SDK的方法,但可以针对较旧的iOS版本。有没有办法做到这一点?

xcode itunesconnect itunes-store ios

7
推荐指数
1
解决办法
3462
查看次数

如何在Swift中使用访问者模式减少样板?

我正在Swift 2.2中为工作项目实现访问者模式.

因此,我不需要简化我的源代码并节省一些时间,我将使用Oktawian Chojnacki在swift中的访客模式示例.

protocol PlanetVisitor {
    func visit(planet: PlanetAlderaan)
    func visit(planet: PlanetCoruscant)
    func visit(planet: PlanetTatooine)
}

protocol Planet {
    func accept(visitor: PlanetVisitor)
}

class PlanetAlderaan: Planet {
    func accept(visitor: PlanetVisitor) { visitor.visit(self) }
}
class PlanetCoruscant: Planet {
    func accept(visitor: PlanetVisitor) { visitor.visit(self) }
}
class PlanetTatooine: Planet {
    func accept(visitor: PlanetVisitor) { visitor.visit(self) }
}

class NameVisitor: PlanetVisitor {
    var name = ""

    func visit(planet: PlanetAlderaan)  { name = "Alderaan" }
    func visit(planet: PlanetCoruscant) { name …
Run Code Online (Sandbox Code Playgroud)

design-patterns visitor-pattern swift swift2

6
推荐指数
1
解决办法
597
查看次数

从Docker容器内的PostgreSQL数据库生成转储文件

我正在从Docker容器中的PostgreSQL数据库生成转储文件,我希望将其放入该/tmp文件夹中.

在Docker容器中打开shell之后,我运行了以下命令:

sh-4.2# su - postgres
Last login: Wed Apr 18 05:22:26 UTC 2018 on pts/1
-bash-4.2$ psql
psql (9.3.15)
Type "help" for help.
Run Code Online (Sandbox Code Playgroud)

然后,我执行此命令以在/tmp文件夹中生成转储文件:

postgres=# \! pg_dump -U user hidb -f /tmp/my_db_dumpa.sql;
Password: 
Run Code Online (Sandbox Code Playgroud)

我在请求时提供了正确的密码,但/tmp主机环境(Ubuntu Linux)中的文件夹内没有物理文件.谢谢

postgresql docker

6
推荐指数
1
解决办法
662
查看次数

当我的lua代码抛出错误时,为什么我不能捕获luabind :: error异常?

当您从c ++调用LUA函数并且存在运行时错误时,LuaBind会抛出一个luabind :: error异常,您可以捕获该异常,然后读取堆栈以查看错误是什么.我的调试器肯定会捕获此异常,但是当我让调试器继续运行时,程序会立即终止,而不是在我的代码中捕获异常.

在析构函数~sexy_member_void_caller()的LuaBind包含文件的"call_member.hpp"中抛出异常.

简单的测试代码会出现问题.我正在使用Xcode 5和LuaBind 0.9.1.

c++ lua exception-handling luabind c++11

5
推荐指数
1
解决办法
615
查看次数

在php cli中,如何重定向?

我将以下代码存储在名为index.php的文件中.

<?php
file_put_contents(date('Y-m-d-H-i-s', time()) . '.txt', '123');
sleep(1);
header("Location: ./index.php", true, 301);
?>
Run Code Online (Sandbox Code Playgroud)

在浏览器中,它每秒都会创建一个文件,但是当我在php CLI(php -f index.php)中运行它时,它只创建一个文件.

如何在php CLI中使用重定向?

php command-line-interface

-1
推荐指数
1
解决办法
1265
查看次数