首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Android群英传

    Flutter混编工程之高速公路Pigeon

    Pigeon的存在就是为了解决多端通信的开发成本。其核心原理就是通过一套协议来生成多端的代码,这样多端只需要维护一套协议即可,其它代码都可以通过Pigeon来自动生成,这样就保证了多端的统一。 https://pub.flutter-io.cn/packages/pigeon/install 引入 首先,需要dev_dependencies中引入Pigeon: dev_dependencies import 'package:pigeon/pigeon.dart'; class Book { String? title; String? /Runner/pigeon.h \ --objc_source_out ios/Runner/pigeon.m \ --java_out . /android/app/src/main/java/dev/flutter/pigeon/Pigeon.java \ --java_package "dev.flutter.pigeon" 这里面比较重要的就是导入

    2K20编辑于 2022-03-31
  • 来自专栏自然语言处理(NLP)论文速递

    斯坦福 | 发布最新PIGEON模型,AI看图猜位置,准确率超90%!

    最近斯坦福大学的研究团队合作开发了一款AI工具PIGEON,将语义地理单元创建(semantic geocell creation)与标签平滑(label smoothing)相结合,对街景图像进行CLIP 论文链接:https://arxiv.org/abs/2307.05845 PIGEON在「照片猜国家」的子任务上实现了91.96%的正确率,40.36%的猜测在距离目标25公里以内,这也是过去五年来第一篇没有军事背景资助的 而PIGEON模型在GeoGuessr中对人类玩家呈碾压优势,在六场比赛中连续击败rainbolt,全球排名前0.01%. PIGEON的进步还启发了开发人员创建另一个模型PIGEOTTO,使用Flickr和维基百科的400万张图像进行训练,输入任意图像而非街景全景图,就能定位出图像的位置,功能更加强大。 实验结果 性能最好的PIGEON模型实现了91.96%的国家准确率(基于政治边界),40.36%的猜测都在距离正确位置25公里以内,中位公里误差为44.35公里,GeoGuessr平均得分为4525分。

    1K10编辑于 2024-01-17
  • 来自专栏向治洪

    Google 2020开发者大会Flutter专题

    Pigeon与Flutter混合开发 什么是Pigeon 在早期的hybird开发模式中,前端和Native交互时需要native双端为JS提供接口。 [在这里插入图片描述] 下面是Pigeon给出的示例: [在这里插入图片描述] 可以看到接入Pigeon后整体代码简洁了不少,而且规范了类型定义。 Pigeon接入 接下来我们看一下如何从零接入Pigeon。截止目前,Pigeon已经发布了0.1.15版本,如下图所示。 import 'package:pigeon/pigeon.dart'; class SearchRequest { String query; } class SearchReply { @Override public Pigeon.SearchReply search(Pigeon.SearchRequest request) { Pigeon.SearchReply

    1.7K00发布于 2020-12-21
  • 来自专栏QQ音乐技术团队的专栏

    Pigeon- Flutter多端接口一致性以及规范化管理实践

    以Flutter官方plugin中的video_player为例,接入pigeon后最终效果如下 可以看到接入pigeon后整体代码简洁了不少,而且规范了类型定义。 接下来我们看一下如何从零接入Pigeon。 接入Pigeon 先看一下pub.dev上Pigeon的介绍,Pigeon只会生成Flutter与native平台通信所需的模板代码,没有其他运行时的要求,所以也不用担心Pigeon版本不同而导致的冲突 Pigeon,是实际进行代码生成的类。 其中Pigeon的入口为run方法,这里进行了模板代码的生成。 // Pigeon实例初始化 final Pigeon pigeon = Pigeon.setup(); // 解析命令行穿传入的参数 final PigeonOptions options = Pigeon.parseArgs

    4.2K52发布于 2020-10-26
  • 来自专栏移动开发之家

    Flutter 官方尝试放只“鸽子”来简化Native插件开发

    接入 集成 pigeon 首先需要在 dev_dependencies 引入 pigeon 依赖。 import 'package:pigeon/pigeon_lib.dart'; class SearchRequest { String query; } class SearchReply flutter pub run pigeon --input pigeons/message.dart --dart_out lib/pigeon.dart --objc_header_out ios /Runner/pigeon.h --objc_source_out ios/Runner/pigeon.m --java_out android/app/src/main/java/com/shuyu { @Override public Pigeon.SearchReply search(Pigeon.SearchRequest request) { Pigeon.SearchReply

    1.4K20发布于 2020-03-20
  • 来自专栏三代测序-说

    全长转录组 | Iso-Seq 三代测序数据分析流程 (PacBio) (2) -- pigeon

    使用方法 Pigeon是一个PacBio转录工具包,包含了用于将全长转录本isoforms按照参考基因组注释进行分类和过滤的工具。 Pigeon基于SQANTI3开发,其输出与单细胞Seurat软件下游分析兼容。 ** 输出文件: #使用说明 $ pigeon prepare <collapsed.gff> #实际运行 $ pigeon prepare UHRR.collapsed.gff Isoforms 归类 Isoforms 过滤 (Filter isoforms) #使用说明 $ pigeon filter <classification.txt> #实际运行 $ pigeon filter UHRR_classification.txt #使用说明 $ pigeon filter <classification.txt> --isoforms <collapsed.sorted.gff> #实际运行 $ pigeon filter UHRR_classification.txt

    3.4K11编辑于 2024-01-26
  • 来自专栏转行程序员

    RPC第一篇:一个RPC调用的执行过程

    通过本篇文章你可以了解到一个RPC调用的执行过程,从而能快速定位问题 Pigeon 作为 RPC 中间件,本篇文章就以 Pigeon-2.10.8 为例, 什么是Pigeon Pigeon是一个纯粹使用 Pigeon 中使用代理模式来实现。 客户端Filter 代理模式的具体实现,是用责任链模式衔接,为框架提供了高可扩展性。 Pipeline 负责对 Channel 中的数据进行加工,在 Pigeon 中,其主要包含:序列化、反序列化、完整性校验、解压缩等。 上面介绍了 Pigeon 的基本架构以及相应的模块,下面将详细解释远程服务调用的执行过程: ? 假设当客户端和服务端建立连接之后( pigeon启动过程 ),客户端调用远程服务,参照上图,Pigeon 的执行路径如下: 1、首先在客户端调用远程服务方法时,其真正调用的是 InvocationHandler

    1.9K20发布于 2019-07-02
  • 来自专栏Python小二

    用 Python 写 3D 游戏,太赞了

    4,0,7.5)) 2、鸽子随机漫步 ①利用. ()生成随机位置,调用. ()实现鸽子漫步 ②利用. ℎ()生成随机选择,随机更新鸽子的状态 ③调用. ()实现随机时间的等待 ④利用. ()实现上述动作序列 pigeon = viz.addAvatar('pigeon.cfg',pos=(2,0,5)) random_walk = vizact.walkTo(pos=[vizact.randfloat(1.5,2.5) vizact.method.state(vizact.choice([1,3],vizact.RANDOM)) random_wait = vizact.waittime(vizact.randfloat(2.0,8.0)) pigeon_idle = vizact.sequence( random_walk, random_animation, random_wait, viz.FOREVER) pigeon.runAction(pigeon_idle

    70620编辑于 2022-12-20
  • 来自专栏Android群英传

    Flutter鸿蒙终端一体化—鹊桥相会

    Flutter混编工程之高速公路Pigeon 这套东西在鸿蒙中也有的适配,可以一键生成ets代码,方便我们进行多端复用,项目地址如下。 https://gitee.com/openharmony-sig/flutter_packages/tree/master/packages/pigeon 在鸿蒙中使用也非常简单,指定引用即可,代码如下所示 yaml pigeon: git: url: "https://gitee.com/openharmony-sig/flutter_packages.git" path: "packages/pigeon" pub get之后,参考我们之前的实现,创建一个接口协议文件,这里就用之前的来示例。 dart import 'package:pigeon/pigeon.dart'; @HostApi() abstract class NativeNetApi { @async String

    1K10编辑于 2024-03-18
  • 来自专栏Python编程与实战

    用 Python 写 3D 游戏,太赞了

    4,0,7.5)) 2、鸽子随机漫步 ①利用. ()生成随机位置,调用. ()实现鸽子漫步 ②利用. ℎ()生成随机选择,随机更新鸽子的状态 ③调用. ()实现随机时间的等待 ④利用. ()实现上述动作序列 pigeon = viz.addAvatar('pigeon.cfg',pos=(2,0,5)) random_walk = vizact.walkTo(pos=[vizact.randfloat(1.5,2.5) vizact.method.state(vizact.choice([1,3],vizact.RANDOM)) random_wait = vizact.waittime(vizact.randfloat(2.0,8.0)) pigeon_idle = vizact.sequence( random_walk, random_animation, random_wait, viz.FOREVER) pigeon.runAction(pigeon_idle

    90730编辑于 2022-10-05
  • 来自专栏Android群英传

    Flutter混编工程之轻量化改造

    轻量化改造实践 首先,我们通过Pigeon生成接口协议和调用代码,原生侧分别基于当前协议来进行开发。 不过,我们需要解决Pigeon CLI脚本只能有一个协议文件的问题。 然后修改之前的run_pigeon.sh脚本。 #! /bin/sh cd pigeon for file in `ls`;do filename=${file%.*} flutter pub run pigeon --input pigeon 首先,依然是借用Pigeon的那一套东西,生成相应的Channel代码,之所以要使用Pigeon来生成代码的原因,主要还是Pigeon使用了BasicMessageChannel来进行Channel通信 import 'package:pigeon/pigeon.dart'; @HostApi() abstract class NativeNetApi { @async String getNativeNetBridge

    96010编辑于 2022-03-31
  • 来自专栏半行代码

    浅析 FlutterBoost

    Flutter内部跳转则根据 container.pages 来渲染页面: 如果 withContainer 是true: 则通过native去进行跳转: 这里通过dev.flutter.pigeon.NativeRouterApi.pushFlutterRoute 接着看如果打开的路由不是一个 Flutter 页面: 调用 dev.flutter.pigeon.NativeRouterApi.pushNativeRoute 这个 channel var result 这里根据页面是否能回退决定是退出一个页面还是退出整个容器: 退出容器调用dev.flutter.pigeon.NativeRouterApi.popRoute 这个 channel Android 跳转 dev.flutter.pigeon.NativeRouterApi.pushNativeRoute处理打开新的native页面。 dev.flutter.pigeon.NativeRouterApi.popRoute退出容器页面。

    3.8K30编辑于 2022-12-05
  • 来自专栏Michael阿明学习之路

    天池 在线编程 高效作业处理服务(01背包DP)

    题目 Twitter正在测试一种名为Pigeon的新工作处理服务。 Pigeon可以用任务实际持续时间的两倍处理任务,并且每个任务都有一个权重。 此外,Pigeon在一个小时内只能服务一个有限的持续时间(最大运行时间)。 给定Pigon服务的最大运行时间,任务的实际运行时间和权重,确定Pigon服务在一小时内可以实现的最大总权重。 输入包括以下参数: n : 任务数量 weights : 每个任务的权重 tasks : 每个任务实际持续时间 p : Pigeon一小时的最大运行时间 ? every task * @param tasks: the actual duration of every task * @param p: maximum runtime for Pigeon in an hour * @return: the maximum total weight that the Pigeon service can achieve in an hour

    43010发布于 2021-02-19
  • 来自专栏Android群英传

    Flutter混编工程之Font桥接

    final BasicMessageChannel<ByteData> channel = BasicMessageChannel<ByteData>( 'dev.flutter.pigeon.NativeFontApi.loadNativeFont NativeFontApi().loadNativeFont('xxx_Medium_60'); Native实现 我们仿照pigeon的实现方式,来创建自己的FontBridgeApi,之所以没通过 pigeon直接生成,那是因为pigeon还不支持生成Byte数组的方式,所以我们只能自己来写,代码如下所示。 // Autogenerated from Pigeon (v1.0.15), do not edit directly. // See also: https://pub.dev/packages/pigeon return ByteBuffer.allocateDirect(output.toByteArray().size).put(output.toByteArray()) } } 我们放到前面pigeon

    98920编辑于 2022-03-31
  • 来自专栏Swift社区

    Flutter 多引擎渲染,在稿定 App 的实践(二):原理篇

    毕竟官方也是只有 Demo,甚至官方推荐的 pigeon Demo[1] 也没和 multiple_flutters Demo[2] 联系起来。 至于为什么不继续使用容器混合型开发? import 'package:pigeon/pigeon.dart'; class SwitchConfig { /// 标题 String? > windSupplementaryInfo); } 以上代码是根据组件 YAML 定义,通过 FGUIComponentAPI 生成的,主要作用是提供给 pigeon 组件进行 xx.api.dart 开发基类(xx.base.dart) pigeon 的作用只是多端的 messageChannel 封装,离我们想要的组件基类其实有很大的距离,这个大家可以去体验下就知道了。 所以调用基类的作用是进一步封装 pigeon 的 api.dart,让开发者无感知是一个对 App 的组件,只要调用/实现 base.dart 的方法,就可以做到独立调用以及给 add_to_app 调用

    2.1K20编辑于 2022-12-12
  • 来自专栏小樱的经验随笔

    【Java学习笔记之二十二】解析接口在Java继承中的用法及实例分析

    classPigeon extends Bird implements Flyanimal { 17 public void fly(){ 18 System.out.println("pigeon can fly"); 19 } 20 public void egg(){ 21 System.out.println("pigeon can lay eggs "); Ant a=new Ant(); 27 a.fly(); 28 System.out.println("Ant's legs are"+ a.legnum); 29 Pigeon p= new Pigeon(); 30 p.fly(); 31 p.egg(); 32 } 33 } 程序运行结果: Ant can  fly Ant'slegs  are 6 pigeon  can fly pigeon  can lay  eggs 二、拓展程序功能,应对需求变化。         

    87050发布于 2018-04-09
  • 来自专栏Rust语言学习交流

    【Rust 日报】2021-11-21 The RustFest Global - Rust in Arts

    2021:Rust In Arts Edition 日程:(https://rustfest.global/schedule/ 地址:https://watch.rustfest.global/ pigeon-rs :电子邮件自动化工具 Pigeon 是一种命令行工具,用于以廉价且高效的方式自动化电子邮件工作流程。 比如,查询时事通讯的订阅者并向他们发送电子邮件: pigeon send-bulk \ sender@your-domain.com \ --receiver-query "select GitHub:https://github.com/quambene/pigeon-rs Top10 Cargo 命令 cargo install [options] crate... cargo uninstall

    47410发布于 2021-12-01
  • 来自专栏SDNLAB

    Falco项目:将交换机软硬件去耦合

    Falco工作组花了11520个小时研发我们的第一款网络交换机Pigeon,该交换机能够兼容这种控制。Pigeon将部署在我们位于Oregon的新一代大规模数据中心。 Pigeon是一个3.2 Tbps交换平台,可以作为leaf switch或者spine switch来使用。 Pigeon是我们在交换机领域首次涉及软件研发,我们不会冒险研发我们自己的交换机,因为我们更希望成为交换机和路由领域的专家。我们将持续支持商业厂商,并与他们在解耦模型中持续合作。 Pigeon的产品化之路 我们在LinkedIn发布了canary版本的软件,通过代码改变少量的主机。canary测试的目标是确保由代码引起的变化都能在现实工作环境中生效,在基础设施中也不会产生变化。 后记 Pigeon是基于LinkedIn的PEO工作组开展的Falco项目,特别感谢Shawn Zandi,Saikrishna Kotha,James Ling,Sujatha Madhavan,Navneet

    81850发布于 2018-04-02
  • 来自专栏微信终端开发团队的专栏

    企业微信超大型工程-跨全平台UI框架最佳实践

    复杂的对象转换需要手动解码与反解码 因此官方推荐使用pigeon来维护我们的channel代码,pigeon 将 我们定义的接口,通过dart的反射将class转换成map的数据结构,并生成各端接口。 2. pigeon的问题 企业微信是亿万级的项目,业务场景也十分复杂,在实际接入使用pigeon 的过程中,受到了非常大的业务挑战,在使用中发现pigeon还是存在着不少的问题。 其实跟pigeon 传输的数据结构有关。 3. pigeon 的传输数据结构优化 List在我们实际的开发中使用的地方非常多,因此我们对pigeon 源码进行了改动目的是为了: 1. 性能上更好,避免重复嵌套带来的复杂计算的和性能问题。 4. pigeon channel 注册 pigeon生成的server,需要在activity中注册后,flutter页面才能通过channel调用native的实现。

    5.4K53发布于 2021-09-23
  • 来自专栏ATYUN订阅号

    开发者都应该了解的SOLID原则(下)

    1//... 2class Pigeon extends Animal { 3 4} 5const animals[]: Array<Animal> = [ 6 //..., 7 new Pigeon(); 8] 9function AnimalLegCount(a: Array<Animal>) { 10 for(int i = 0; i <= a.length; i if(typeof a[i] == Snake) 16 log(SnakeLegCount(a[i])); 17 if(typeof a[i] == Pigeon 21AnimalLegCount(animals); 要使这个函数符合LSP,需要遵循Steven Fenton 提出的以下要求: 如果父类(Animal)有一个接受父类类型(Animal)的参数的方法,它的子类(Pigeon )应该接受一个父类类型(Animal)或子类类型(Pigeon)作为参数 如果父类返回一个父类类型(Animal),其子类应当返回一个父类类型(Animal)或子类类型(Pigeon)。

    80020发布于 2019-07-05
领券