草庐IT

event-driven-design

全部标签

design-patterns - 可能有数百个小类的工厂模式的替代方案

我正在开发一个用GoLang编写的小型游戏/模拟器,其中可能有数百种能力。对于每个玩家,他们将拥有1到3种能力。我会将这些与字符串或ID一起存储。实例化这些能力的最佳方式是什么。通常我会使用工厂类,但鉴于我所说的那么多,我不确定这是最好的方法。 最佳答案 你仍然可以使用工厂模式,这就是encoding/gob包用途。Playground:http://play.golang.org/p/LjR4PTTCvw例如在abilities.go中你可以有typeAbilityinterface{Execute()}varabilities=

design-patterns - "Plugin system"用于围棋

我正在寻找Architect的等价物对于Go语言。有了Architect,模块公开了“插件”。插件可以指定依赖项,并导出API以允许与其他插件交互。要启动应用程序实例,您需要指定一个插件列表。依赖关系已解决,插件按顺序加载(实例化)。由于每个应用程序创建每个插件的单个实例,多个应用程序可以在同一个进程中启动而不会发生冲突。编辑:我不需要动态加载其他模块。 最佳答案 我不了解这样做的软件包,但对如何做到这一点有一些想法-希望它会有所帮助。使用buildtag对于每个插件。让每个插件(文件)在特殊注释/变量中指定其依赖项运行生成初始化顺

c - 使用 libevent 编译时对 `event_new' 的 undefined reference

我现在正在使用libevent:#include#include#include#include#include#includestructevent_base*base;intPORT=9999;intBACKLOG=5;intcreate_bind_listen(){structsockaddr_inmy_addr;intyes=1;intsock=socket(AF_INET,SOCK_STREAM,0);setsockopt(sock,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int));memset(&my_addr,0,sizeof(struc

c - Linux 键盘原始读取,从/dev/input/event0 读取或从stdin 读取哪个更好?

我正在为RaspberryPi开发一个小型C视频游戏库。我正在从头开始对输入系统进行编码,在阅读并查看了一些有关原始输入读取的示例后,我产生了一些疑问。对于鼠标读取,我只使用/dev/input/event1,我将其作为O_NONBLOCK打开(),我读取()input_event(s)并且我还将鼠标读取放在一个单独的pthread中。很简单。对于键盘读取,我看到一些示例将标准输入重新配置为O_NONBLOCK(使用fcntl()),然后保存并重新配置键盘termios属性(ICANON、ECHO),还有一些示例还使用ioctl()保存并重新配置键盘模式。做所有这些事情而不是仅仅读取/

xml - PyCharm 4 不会在双击 .ui 文件时打开 Qt Designer。 (Linux)

PyCharm和QtDesigner都已安装并正在运行。PyCharm将.ui文件显示为Qt设计器文件,但当我单击它们或双击它们时没有任何反应。为了编辑它们,我必须右键单击-->showinopenfolderwithThunar[我在Xfce上],然后双击文件管理器中的文件,这将在QtDesigner中打开它。我在设置中看不到任何更改此行为的选项。关于如何使QtDesigner从PyCharm启动的任何想法? 最佳答案 没有现成的解决方案,因为PyCharm似乎不知道有问题的扩展类型(.ui),但我想使用RegisterNewFi

c - Linux 输入设备读取 ioctl(EVIOCGKEY()) 与 read(input_event)

我所有的代码都基于linuxjournal.com上的一篇文章hereisthearticleIbasedmycodeon我正在编写一个嵌入式应用程序,我正在尝试从键盘读取击键。这是我正在使用的代码uint8_tkey_b[KEY_MAX/8+1];memset(key_b,0,sizeof(key_b));ioctl(fd,EVIOCGKEY(sizeof(key_b)),key_b);for(yalv=0;yalv除了我按“a”时,此代码大部分都有效。根据input.h,KEY_A设置为值30。但是当我在键盘上按“a”时,它返回值102而不是30。我已经测试了键盘上的其他键,并且看

linux - 如何在 Perl 中将 Linux 键码从/dev/input/event* 转换为 ASCII?

我正在编写一个Perl脚本,从臭名昭著的/dev/input/event*读取数据,但我没有找到将内核生成的关键代码转换为ASCII的方法。我说的是这张表中的linux键码here如果不将数组硬编码到脚本中,我似乎找不到可以帮助我翻译它们的东西。我错过了什么吗?我想跳过数组部分,因为这似乎不是一个好的做法,有什么想法吗?:) 最佳答案 不幸的是,我不会用Perl编程,但这里有一个用C编写的简单示例。也许它可能对您有所帮助。/**Basedonkeytable.cbyMauroCarvalhoChehab**Thisprogramis

database-design - 你知道任何支持嵌入式文档(MongoDB)的数据库设计软件吗?

我正在尝试为MongoDB设计数据库模式,但希望能够直观地表示嵌入式文档。有点像这样:http://www.mongodb.org/download/attachments/131465/reference.jpg?version=1&modificationDate=1253899724083有没有人知道一些软件可以让我做到这一点?我知道我可以在纸上完成,但我希望能够与同事共享架构并让他们编辑小东西。 最佳答案 查看JSONDesigner用于创建JSON建模图。您也可以考虑使用JSONSchema格式作为表示和共享Mongo文档

database-design - 你知道任何支持嵌入式文档(MongoDB)的数据库设计软件吗?

我正在尝试为MongoDB设计数据库模式,但希望能够直观地表示嵌入式文档。有点像这样:http://www.mongodb.org/download/attachments/131465/reference.jpg?version=1&modificationDate=1253899724083有没有人知道一些软件可以让我做到这一点?我知道我可以在纸上完成,但我希望能够与同事共享架构并让他们编辑小东西。 最佳答案 查看JSONDesigner用于创建JSON建模图。您也可以考虑使用JSONSchema格式作为表示和共享Mongo文档

linux - 将 epoll 与设备(/dev/event/...)一起使用是否有效?

我正在开发一个单线程进程小程序,它创建一个代理虚拟设备(更准确地说是一个虚拟Xbox360pad);我确实设法用uinput创建了它界面,我正确设置了它,它工作得很好。为了向这个虚拟设备提供命令,我从另一个真实接口(interface)(在本例中是一个PS3pad)读取事件,然后我打开带有这些标志的真实设备文件:fd=open("/dev/input/event22",O_RDONLY);//openthePS3pad主循环类似于(减去错误检查):while(run){input_eventev={0};read(fd,&ev,sizeof(structinput_event));//