问题列表 - 第25983页

如何使Swig正确地将在C中修改的char*缓冲区包装为Java Something-other?

我正在尝试包装一些用于Java的遗留代码,我很高兴看到Swig能够处理头文件并生成一个几乎可以工作的好包装器.现在我正在寻找能让它真正起作用的深刻魔法.

在CI中有一个看起来像这样的功能

DLL_IMPORT int DustyVoodoo(char *buff, int len,  char *curse);
Run Code Online (Sandbox Code Playgroud)

此函数返回的此整数是一个错误代码,以防它失败.争论是

  • buff 是一个字符缓冲区
  • len 是缓冲区中数据的长度
  • curse 另一个包含调用DustyVoodoo结果的字符缓冲区

所以,你可以看到它的发展方向,结果实际上是通过第三个参数返回的.同样len令人困惑,因为它可能是两个缓冲区的长度,它们总是在调用代码中被分配为相同的大小,但是DustyVoodoo我认为它们不需要相同.为了安全起见,两个缓冲区在实践中应该是相同的大小,比如512个字符.

为绑定生成的C代码如下:

SWIGEXPORT jint JNICALL Java_pemapiJNI_DustyVoodoo(JNIEnv *jenv, jclass jcls, jstring 

jarg1, jint jarg2, jstring jarg3) {
  jint jresult = 0 ;
  char *arg1 = (char *) 0 ;
  int arg2 ;
  char *arg3 = (char *) 0 ;
  int result;

  (void)jenv;
  (void)jcls;
  arg1 = 0;
  if (jarg1) {
    arg1 = (char *)(*jenv)->GetStringUTFChars(jenv, jarg1, 0);
    if (!arg1) return 0;
  } …
Run Code Online (Sandbox Code Playgroud)

c java java-native-interface swig

7
推荐指数
2
解决办法
6259
查看次数

将记录添加到has_and_belongs_to_many关系中

我有两个模型,用户和促销活动.这个想法是促销可以有很多用户,用户可以有很多促销.

class User < ActiveRecord::Base
  has_and_belongs_to_many :promotions
end

class Promotion < ActiveRecord::Base
  has_and_belongs_to_many :users
end
Run Code Online (Sandbox Code Playgroud)

我还有一个promotion_users表/模型,没有自己的id.它引用了user_id和promotions_id

class PromotionsUsers < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)

那么,如何将用户添加到促销中?我尝试过这样的事情:

user = User.find(params[:id])
promotion = Promotion.find(params[:promo_id])
promo = user.promotions.new(promo)
Run Code Online (Sandbox Code Playgroud)

这会导致以下错误:

NoMethodError: undefined method `stringify_keys!' for #<Promotion:0x10514d420>
Run Code Online (Sandbox Code Playgroud)

如果我尝试这一行:promo = user.promotions.new(promo.id)

我收到此错误:

TypeError: can't dup Fixnum
Run Code Online (Sandbox Code Playgroud)

我确信我的问题有一个非常简单的解决方案,而我只是没有以正确的方式寻找解决方案.

ruby-on-rails relationship has-and-belongs-to-many

25
推荐指数
3
解决办法
2万
查看次数

试图收集电子邮件分析

我用PHP编写了一个电子邮件应用程序来处理非常大的邮件列表.有没有办法找出哪些电子邮件是由谁打开的?任何解决方案都可以,只要它可以告诉我用户是否实际收到并打开了电子邮件.我不想使用电子邮件收据,因为它可能会推迟收件人.

如果它是相关的,我正在使用codeIgniter框架.

php email analytics codeigniter

4
推荐指数
1
解决办法
1176
查看次数

语法解释

在代码中:

struct tagPaint
{
}Paint,//<<<--------------what's this (Paint)?
*pPaint;//<<<-------------and this(*pPaint)?
Run Code Online (Sandbox Code Playgroud)

我的意思是我使用类型为tagPaint的名称Paint和名为pPaint的指针向tagPaint声明变量吗?
谢谢.

c++

0
推荐指数
1
解决办法
186
查看次数

SQL Server:删除具有外键约束的行:事务是否可以覆盖约束?

我有一些表添加了外键约束.这些与代码生成一起用于在生成的存储过程中设置特定连接.

是否可以通过调用事务中的多个删除来覆盖这些约束,特别是C#中的"TransactionScope"或者是否需要级联删除?

sql sql-server transactions constraints sql-server-2008

6
推荐指数
2
解决办法
4万
查看次数

有人可以解释这个懒惰的评估代码吗?

所以,这个问题刚刚被问到:

如何处理"无限"IEnumerable?

我的示例代码:

public static void Main(string[] args)
{
    foreach (var item in Numbers().Take(10))
        Console.WriteLine(item);
    Console.ReadKey();
}

public static IEnumerable<int> Numbers()
{
    int x = 0;
    while (true)
        yield return x++;
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么这是懒惰的评估?我在Reflector中查找了这段代码,我比开始时更困惑.

反射器输出:

public static IEnumerable<int> Numbers()
{
    return new <Numbers>d__0(-2);
}
Run Code Online (Sandbox Code Playgroud)

对于numbers方法,看起来为该表达式生成了一个新类型:

[DebuggerHidden]
public <Numbers>d__0(int <>1__state)
{
    this.<>1__state = <>1__state;
    this.<>l__initialThreadId = Thread.CurrentThread.ManagedThreadId;
}
Run Code Online (Sandbox Code Playgroud)

这对我来说毫无意义.我会认为这是一个无限循环,直到我把这些代码放在一起并自己执行.

编辑:所以我现在明白了.取()可以告诉大家,枚举了"结束"在foreach,当它真的没有,但不应号()被调用,在它的全部链接着在起飞前() ?Take结果是实际被枚举的内容,对吗?但是,如果没有对Numbers进行全面评估,那么如何执行?

EDIT2:这只是'yield'关键字强制执行的特定编译器技巧吗?

c# linq ienumerable reflector lazy-evaluation

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

在某些浏览器中,"return false"在使用JavaScript动态添加到DOM时会被忽略

我动态地向DOM添加<a>(链接)标记:

var link = document.createElement('a');
link.href = 'http://www.google.com/';
link.onclick = function () { window.open(this.href); return false; };
link.appendChild(document.createTextNode('Google'));
//someDomNode.appendChild(link);
Run Code Online (Sandbox Code Playgroud)

我希望链接在新窗口中打开(我知道它很糟糕,但它是必需的).我也尝试使用"target"属性,但我也有这个解决方案的错误行为.

我的代码在IE和Firefox中运行良好,但返回false在Safari,Chrome和Opera中不起作用.通过不工作我的意思是在打开新窗口后遵循链接.

我想我可能是因为Google Maps V3环境......

编辑:要查看实际页面上的行为:

  1. 转到http://tinyurl.com/29q6nw6
  2. 点击地图上的任何标记,将显示一个气球.
  3. 单击气球中的标题,该链接应在新窗口中打开(在IE和FF中工作,但在Safari,Chrome和Opera中不能.

欢迎任何帮助!

Edit2:问题出在函数"MakeInfoWindowContent"中,它位于"gmaps3.js"中.我不使用DOM来创建元素(我使用字符串),因为必须将此HTML字符串传递给Google Maps(对于信息窗口 - 气球).实际上,在两个不同的地方创建了相同的链接.左边的一个,用DOM功能创建(如本问题所示),适用于所有浏览器,气球中有一个用HTML字符串创建,这个在Safari,Chrome和Opera中效果不佳(链接是在新窗口打开之后,即使返回false也是如此).

编辑3:仍然不知道为什么会发生这种情况......如果有人有想法,请告诉我!

html javascript dom google-maps dhtml

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

如何使用Groovy Set来获得独特的元素?

这一定很简单,我仍然无法理解我错在哪里:

class A {
    boolean equals(o) { true }
}
def s = [new A(), new A()] as Set
assert s.size() == 1 // Assertion failed: actually gives 2
Run Code Online (Sandbox Code Playgroud)

我应该覆盖哪种方法才能获得唯一性?

groovy

2
推荐指数
1
解决办法
5562
查看次数

在ASP.NET中接收POST数据

我想在C#桌面应用程序中使用ASP来生成代码.

为此,我设置了一个简单的主机(派生自System.MarshalByRefObject),它通过HttpRuntime.ProcessRequest处理System.Web.Hosting.SimpleWorkerRequest.这将处理传入请求指定的ASPX脚本(使用System.Net.HttpListener等待请求).

客户端部分由System.ComponentModel.BackgroundWorker表示,它构建System.Net.HttpWebRequest并从服务器接收响应.

我的客户端部分代码的简化版本如下所示:

private void SendRequest(object sender, DoWorkEventArgs e)
{
    // create request with GET parameter
    var uri = "http://localhost:9876/test.aspx?getTest=321";
    var request = (HttpWebRequest)WebRequest.Create(uri);

    // append POST parameter
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";

    var postData = Encoding.Default.GetBytes("postTest=654");
    var postDataStream = request.GetRequestStream();
    postDataStream.Write(postData, 0, postData.Length);

    // send request, wait for response and store/print content
    using (var response = (HttpWebResponse)request.GetResponse())
    {
        using (var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
        {
            _processsedContent = reader.ReadToEnd();
            Debug.Print(_processsedContent);
        }
    }
}

我的服务器部分代码看起来像这样(没有异常处理等):

public void ProcessRequests() …

.net asp.net post httpwebrequest httprequest

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

Spring 3安全认证成功处理程序

我正在使用form-login安全性,我正在尝试实现身份验证成功处理程序,但我不知道如何返回到登录过程之前最初请求的资源.默认情况下,我认为它实现了一个SimpleUrlAuthenticationSuccessHandler,我试图镜像该类实现.但是它设置了一个setDefaultTargetUrl(defaultTargetUrl)也许就是魔法发生的地方,它记住了在登录过程之后返回的资源.

任何帮助是极大的赞赏.下面是我的春季安全<form-login/>元素

<form-login login-page="/login.jsp" login-processing-url="/b2broe_login"
        authentication-success-handler-ref="passwordExpiredHandler" 
        authentication-failure-url="/login.jsp?loginfailed=true" />
Run Code Online (Sandbox Code Playgroud)

spring-security

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