我的朋友和我正在编写一个IRC C#bot,我们正在寻找一种包含模块系统的方法,以便用户可以编写自定义模块来扩展功能.
机器人使用Regex从服务器中分离所有原始数据,然后使用数据触发相应的事件.例如,典型的事件处理程序可能如下所示:
OnChannelMessage(object sender, ChannelMessageEventArgs e)
{
}
Run Code Online (Sandbox Code Playgroud)
In ChannelMessageEventArgs将是频道名称,发送者的昵称,消息等...
我想拥有一个插件系统,以便人们可以随意构建模块并加载/卸载它们,当机器人加载时,或者运行时.
理想情况下,我希望能够动态编译.cs文件,并在plugin.cs文件中,将是一些事情:
感谢您对于在编程方面相对较新的人的起点.
当我尝试计算像"7 + 3"之类的字符串然后将结果存储在BigInteger变量中时,我面临BigInteger的问题,它会抛出一个NumberFormat异常.有关这如何工作的任何指示?例如:
String ist="7+2";
java.math.BigInteger a = new java.math.BigInteger(ist);
Run Code Online (Sandbox Code Playgroud) 我从http://sites.google.com/site/dbxfirebird/下载了 Firebird DBX 驱动程序,并且我已经能够编译“测试连接”项目并使其运行。我将它指向我的测试数据库,如下所示:
procedure TMainForm.Button1Click(Sender: TObject);
var C: TSQLConnection;
begin
C := TSQLConnection.Create(Self);
try
C.DriverName := 'FirebirdConnection';
C.Params.Add('User_Name=SYSDBA');
C.Params.Add('Password=masterkey');
C.Params.Add('Database=C:\fbtest\test.fdb');
C.Open;
if C.Connected then
ShowMessage('Connection is active')
finally
C.Free;
end;
end;
Run Code Online (Sandbox Code Playgroud)
当我运行它时,它工作正常。但是当我将完全相同的代码放入不同的项目中时,它不起作用。我已将 fbclient.dll(Firebird 嵌入式驱动程序 DLL,重命名为 fbclient)、其所有依赖项和 dbxdrivers.ini 文件复制到与项目的 EXE 运行所在的同一文件夹中。我看不出任何原因这不应该工作,但是对 .Open 的调用失败并显示:
项目 Project1.exe 引发异常类 TDBXError 并显示消息“未知驱动程序:FirebirdConnection”。
同样,这是对 Open 的调用。对 DriverName 的分配工作得很好。以前有人见过这个问题吗?为什么完全相同的代码在测试项目中可以工作,但不同的代码却不能工作,有什么方法可以修复它吗?
我最近在java中计算双元组的哈希码时遇到了一个奇怪的情况.假设您有两个元组(1.0,1.0)和(Double.POSITIVE_INFINITY,Double.POSITIVE_INFINITY).使用Joshua Bloch的Effective Java(第7项)中所述的习语,这两个元组不会被认为是相等的(想象一下这些元组是对象).但是,使用第8项中所述的公式计算hashCode()每个元组的计算结果为相同的值.
所以我的问题是:当我编写公式时,我错过了这个公式有什么奇怪的,或者只是一个奇怪的哈希码碰撞案例?
这是我的简短比较方法来说明情况(我把它写成JUnit4测试,但它应该很容易转换为main方法).
@Test
public void testDoubleHashCodeAndInfinity(){
double a = 1.0;
double b = 1.0;
double c = Double.POSITIVE_INFINITY;
double d = Double.POSITIVE_INFINITY;
int prime = 31;
int result1 = 17;
int result2 = 17;
long temp1 = Double.doubleToLongBits(a);
long temp2 = Double.doubleToLongBits(c);
//this assertion passes successfully
assertTrue("Double.doubleToLongBits(Double.POSITIVE_INFINITY" +
"==Double.doubleToLongBits(1.0)",temp1!=temp2);
result1 = prime*result1 + (int)(temp1^(temp1>>>32));
result2 = prime*result2 + (int)(temp2^(temp2>>>32));
//this assertion passes successfully
assertTrue("Double.POSITIVE_INFINITY.hashCode()" +
"==(1.0).hashCode()",result1!=result2);
temp1 = Double.doubleToLongBits(b);
temp2 = …Run Code Online (Sandbox Code Playgroud) 蟒蛇:
m=[[0]*3]*2
for i in range(3):
m[0][i]=1
print m
Run Code Online (Sandbox Code Playgroud)
我希望这段代码可以打印出来
[[1, 1, 1], [0, 0, 0]]
Run Code Online (Sandbox Code Playgroud)
但它打印出来
[[1, 1, 1], [1, 1, 1]]
Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的应用程序,运行一系列不推荐使用的扫描程序,从串行端口获取条形码扫描并发送回扫描仪,确定它接收到扫描.基于此,扫描仪闪烁绿色,用户知道它们可以继续.
我喜欢这个模型而不是我对键盘楔的理解,因为如果应用程序发生了某些事情(应用程序挂起,焦点的表单发生了变化,PC挂起,PC就无法跟上扫描),拿着扫描枪的人会知道有问题,因为他们不会收到绿色闪光,他们将无法继续扫描.
我正在寻找添加一些扫描仪,似乎很多人正在使用有效充当键盘楔的条形码扫描仪.其中一些扫描仪的范围超过100英尺,这意味着人们使用它们远离PC(就像我的用户一样).所以我想知道我是否遗漏了关于键盘楔形模型的东西.我是否缺少一些机制来确保由充当键盘楔的扫描仪解码的扫描实际到达PC上运行的应用程序?一台运行像Windows Mobile这样的全功能手持电脑似乎非常难以确保我的用户不会扫描不会进入应用程序的数据,甚至是带键盘和屏幕的中档扫描仪也是如此,但后者是扫描仪任何可编程性的切入点吗?
这是*nix和Windowsdefine的包含路径的正确方法吗?
define( 'INCPATH', realpath( dirname( __FILE__ ) ) . '/' );
Run Code Online (Sandbox Code Playgroud)
请注意上面包含的尾随正斜杠.两个操作系统的包含/需要相同的正斜杠吗?
编辑(更新答案):
根据我的收集,下面的代码是为nix和Windows操作系统普遍定义include/require路径的正确方法.请在下面的评论中随意更正任何内容.
令我感到困惑的是我看到的许多例子显示替换back-slashes (\)为forward-slashes(/).根据以下一些答案,这是不必要的.
所以最终的正确代码(纯粹主义者)是:
define( 'INCPATH', realpath( dirname( __FILE__ ) ) . DIRECTORY_SEPARATOR );
Run Code Online (Sandbox Code Playgroud)
该代码产生以下结果:
*nix: /path/to/the/file/
Windows: C:\Path To\the\file\
一个简短的解释,从内部(__FILE__)out(realpath())开始工作:
FILE文件的完整路径和文件名.始终包含已解析符号链接的绝对路径.
dirname()返回的字符串是删除了任何尾部/组件的路径.负责删除文件名.
realpath()成功返回规范化(标准化/标准化)绝对路径名.生成的路径将没有符号链接'/./'或'/../'组件.我认为这包括彻底性,因为__FILE__已经解决了符号链接.或者它可能包括解决相对路径?无论哪种方式,它似乎巩固了我们的目标.
我正在尝试使用 omp 来实现列表排名问题(也称为快捷方式),以获得数组 W 的总和前缀。我不知道我是否正确使用了刷新杂注..并且在编译“barrier”时出现警告区域不能紧密嵌套在工作共享、关键、有序、主或显式任务区域内”
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <omp.h>
main(int argc, char *argv[])
{
int Q[9]={1,2,3,4,5,6,7,8,0};
int W[8]={1,2,3,4,5,6,7,8};
int i,j=6,id;
printf("Before:\n");
for(j=0;j<8;j++)
printf("%d",W[j]);
printf("\n");
#pragma omp parallel for shared(Q,W) private(id) num_threads(7)
for (i=6; i>=0; i--)
{
id= omp_get_thread_num();
while((Q[i] !=0)&& (Q[Q[i]] !=0))
{
#pragma omp flush(W)
W[i]=W[i]+W[Q[i]];
#pragma omp flush(W)
printf("Am %d \t W[%d]= %d",id,i,W[i]);
#pragma omp barrier
#pragma omp flush(Q)
Q[i]=Q[Q[i]];
#pragma omp flush(Q)
printf("Am %d \n Q[%d]= %d",id,i,Q[i]);
};
}
printf("Result:\n");
for(j=0; j<8; j++) …Run Code Online (Sandbox Code Playgroud) 是否可以通过直接调用serialize方法而不是使用回调来从jquery中的UL获取序列化的项目列表?代码段:
var sortableLinks = $("#category_links_list_3");
var linkOrderData = $(sortableLinks).sortable('serialize');
Run Code Online (Sandbox Code Playgroud)
category_links_list_3 是UL的id
DOM结构是:
<div class="hidden" id="inline_list_3">
<ul class="category_links_list ui-sortable" id="category_links_list_3">
<li class="link_title ui-state-default" id="category_link_8">Coconut Oil</li>
<li class="link_title ui-state-default" id="category_link_9">Hempseed</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
谢谢...
我对从FFT获得的结果感到困惑,并希望得到任何帮助.
我正在使用FFTW 3.2.2但是与其他FFT实现(在Java中)得到了类似的结果.当我采用正弦波的FFT时,结果的缩放取决于波的频率(Hz) - 具体而言,它是否接近整数.当频率接近整数时,得到的值非常小,当频率在整数之间时,它们的数量级要大一些.该图显示了对应于不同频率的波频率的FFT结果中的尖峰幅度.这是正确的吗??
我检查了FFT的逆FFT等于原始正弦波乘以样本数,它是.FFT的形状似乎也是正确的.
如果我正在分析单个正弦波,那就不会那么糟糕了,因为无论高度如何,我都可以在FFT中寻找尖峰.问题是我想分析正弦波的总和.如果我正在分析正弦波的总和,例如440 Hz和523.25 Hz,那么只有523.25 Hz的正弦波峰值出现.另一个的尖峰非常小,看起来像是噪音.必须有一些方法来使这项工作,因为在Matlab中它确实有效 - 我在两个频率上得到类似大小的尖峰.如何更改下面的代码以均衡不同频率的缩放?
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <fftw3.h>
#include <cstdio>
using namespace std;
const double PI = 3.141592;
/* Samples from 1-second sine wave with given frequency (Hz) */
void sineWave(double a[], double frequency, int samplesPerSecond, double ampFactor);
int main(int argc, char** argv) {
/* Args: frequency (Hz), samplesPerSecond, ampFactor */
if (argc != 4) return -1;
double frequency = atof(argv[1]);
int samplesPerSecond = atoi(argv[2]);
double …Run Code Online (Sandbox Code Playgroud)