天道酬勤,学无止境

protoc

How to write a custom Protobuf CodeGenerator in Java

I'm trying to write a custom code generator for an in-house proprietary programming language. I figured I could write the generator in Java, using the protoc plugin guide. My main() does something like this: public static void main(String[] args) throws IOException { CodeGenerator gen = new CodeGenerator(); PluginProtos.CodeGeneratorRequest codeGeneratorRequest = PluginProtos.CodeGeneratorRequest.parseFrom(args[0].getBytes()); codeGeneratorRequest.getProtoFileList().forEach(gen::handleFile); // get the response and do something with it //PluginProtos.CodeGeneratorResponse response =

2021-11-23 17:44:48    分类:问答    java   protocol-buffers   protoc

带有 node.js 的协议缓冲区 - 无法从 .proto 生成 js(Protocol buffer with node.js - failed to generate js from .proto)

问题 尝试通过本文档在我的 node.js Web 服务器中使用 google 协议缓冲区。 运行以下命令时: protoc --js_out=import_style=commonjs,binary: ServiceMessage.proto 我收到了: --js_out: : Unknown option: import_style 有什么建议? 干杯,意大利 回答1 根据此讨论行,最近添加了js_out并在 2 月 20 日合并,您可以使用来自 protobuf 的最新代码更新您的 protoc。

2021-11-10 15:55:34    分类:技术分享    javascript   node.js   protocol-buffers   proto   protoc

Protocol buffer with node.js - failed to generate js from .proto

Trying to use google protocol buffer in my node.js web server with this documentation. When running the following command: protoc --js_out=import_style=commonjs,binary: ServiceMessage.proto I received: --js_out: : Unknown option: import_style Any suggestions? Cheers, Itay

2021-11-09 07:38:43    分类:问答    javascript   node.js   protocol-buffers   proto   protoc

使用 dep 时,如何为 protoc 正确包含 golang protobuf/ptypes?(How do I correctly include golang protobuf/ptypes for protoc when using dep?)

问题 我在使用 dep 时遇到了包括 google/protobuf/timestamp.proto 众所周知的类型的问题。 我收到一个错误: google/protobuf/timestamp.proto: File not found 服务.proto: syntax = "proto3"; import "google/protobuf/timestamp.proto"; package com.rynop.platform; option go_package = "rpc"; service PlatformService { rpc Test(EmptyMessage) returns (EmptyMessage); } message EmptyMessage { } message A { string summary = 1; google.protobuf.Timestamp start = 2; } message B { repeated A foos = 1; } 安装包含时间戳 .proto def 的包: dep ensure -add github.com/golang/protobuf/ptypes/timestamp 运行protoc并得到错误: build/bin/protoc -Ivendor -I. --twirp_typescript

2021-10-24 23:33:13    分类:技术分享    go   protocol-buffers   protoc   twirp

无法为 Tensorflow 对象检测 API 编译 .proto 文件(Unable to compile .proto files for Tensorflow object-detection API)

问题 我正在尝试安装 Tensorflow,但在编译 .proto 文件时遇到了问题。 我尝试在研究文件夹中运行此命令: C:/protoc/bin/protoc object_detection/protos/*.proto --python_out=. 但它输出: object_detection/protos/*.proto: No such file or directory 知道为什么会这样吗? 回答1 我已经找到了解决方案,它很麻烦。 如果我一一编译它们就可以工作。 例如 C:/protoc/bin/protoc object_detection/protos/anchor_generator.proto --python_out=。 其中 C:/protoc/bin/protoc 是 protoc.exe 文件的路径 回答2 这段代码对我有用,试试吧 protoc-3.4.0-win32\bin\protoc object_detection/protos/*.proto --python_out=. protoc-3.4.0-win32\bin\protoc protoc 是 protoc.exe 文件的路径

2021-10-24 14:33:03    分类:技术分享    python   protoc

Protoc Java 插件的依赖关系?(Dependencies for Protoc Java plugin?)

问题 我正在尝试在 How to write a custom Protobuf CodeGenerator in Java 中制作工作示例。 当我尝试编译文件时 import com.google.protobuf.compiler.PluginProtos; import java.io.IOException; public class MyPlugin { public static void main(String[] args) throws IOException { CodeGenerator gen = new CodeGenerator(); PluginProtos.CodeGeneratorRequest codeGeneratorRequest = PluginProtos.CodeGeneratorRequest.parseFrom(System.in); codeGeneratorRequest.getProtoFileList().forEach(gen::handleFile); // get the response and do something with it //PluginProtos.CodeGeneratorResponse response = PluginProtos.CodeGeneratorResponse

2021-10-23 22:27:49    分类:技术分享    java   protocol-buffers   protoc   protobuf-java

Unable to compile .proto files for Tensorflow object-detection API

I'm trying to install Tensorflow and im having trouble compiling the .proto files. I try running this command in the research folder: C:/protoc/bin/protoc object_detection/protos/*.proto --python_out=. but it outputs: object_detection/protos/*.proto: No such file or directory Any idea why this is happening?

2021-10-23 22:25:49    分类:问答    python   protoc

如何为一元 rpc 定义响应头(How to define response headers for unary rpc)

问题 在 Go 中,我想从我的 rpc 处理程序实现中设置一些响应头。 具体来说,我想设置一些与缓存控制相关的标头。 但是,当rpc定义为一元响应时,protoc生成的方法签名只包含请求上下文和请求消息。 这与从流响应生成的代码形成对比,后者包括请求消息和grpc.ServerStream 。 下面是一个由 protoc 生成的示例接口: type CmsServer interface { GetPost(context.Context, *PostRequest) (*Post, error) GetPosts(*GetPostsOptions, Cms_GetPostsServer) error } 在该示例中, GetPosts包括Cms_GetPostsServer参数这是一个grpc.ServerStream看起来包括方法设置定制响应头https://godoc.org/google.golang.org/grpc#ServerStream(ⅰ没有试过又那么正确我,如果这是错误的)。 同时, GetPost似乎没有任何方法可以仅通过查看方法签名来设置响应标头(context.Context 只是请求上下文,而不是响应上下文)。 那么如何为一元响应设置自定义响应标头? 回答1 请参阅发送和接收元数据 - 服务器端 请求上下文具有将请求与连接匹配的信息。 您使用 grpc

2021-10-21 12:48:34    分类:技术分享    go   protocol-buffers   grpc   protoc

为什么我的 Protobuf 消息(在 Python 中)忽略零值?(Why is my Protobuf message (in Python) ignoring zero values?)

问题 我一直致力于为一个项目实现 IPC 的 protobufs。 出于某种原因,设置为 0 的值不会被设置/序列化。 对于上下文,.proto 文件包含以下消息: syntax = "proto3"; enum SetGet { SET = 0; GET = 1; } message State { SetGet setget = 1; double x = 2; double y = 3; double depth = 4; double yaw = 5; double pitch = 6; double roll = 7; } 我使用 protoc 将文件编译为 Python _pb2 文件,然后尝试运行以下测试脚本: import filename_pb2 as pb state = pb.State() state.x = 0 state.y = 0 state.depth = 0 state.yaw = 0 state.pitch = 0 state.roll = 0 state.setget = pb.SET print("State: {}".format(state)) state2 = pb.State() state2.ParseFromString(state.SerializeToString()) print("State2: {}".format

2021-10-20 07:51:49    分类:技术分享    python   protocol-buffers   protoc

protoc object_detection/protos/*.proto: 没有那个文件或目录(protoc object_detection/protos/*.proto: No such file or directory)

问题 我正在按照此处找到的示例进行操作。 但是每当我输入命令“C:/Program Files/protoc/bin/protoc”object_detection/protos/ .proto --python_out=。 我收到一条错误消息,指出 object_detection/protos/ .proto: No such file or directory。 我无法创建名为 *.proto 的目录。 所以我缺少一些关于如何做到这一点的基本信息。 因为我找不到其他人抱怨这个问题,所以它一定很简单。 我正在使用 Windows 操作系统。 回答1 解决了 Windows,在“研究”中并在路径中包含“ protoc ”,然后这将起作用: for /f %i in ('dir /b object_detection\protos\*.proto') do protoc object_detection\protos\%i --python_out=. 祝你好运 ! 回答2 确保将目录更改为“models\research\”,并尝试使用 protoc 版本 3.4.0 执行教程中的步骤,就像教程一样。 我只使用 3.4.0 为我工作。 我的 cmd 行有效: C:\Users\...\protoc-3.4.0-win32\bin\protoc object_detection

2021-10-19 05:14:39    分类:技术分享    python   tensorflow   object-detection   protoc