我正在尝试包装一些用于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) 我有两个模型,用户和促销活动.这个想法是促销可以有很多用户,用户可以有很多促销.
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)
我确信我的问题有一个非常简单的解决方案,而我只是没有以正确的方式寻找解决方案.
我用PHP编写了一个电子邮件应用程序来处理非常大的邮件列表.有没有办法找出哪些电子邮件是由谁打开的?任何解决方案都可以,只要它可以告诉我用户是否实际收到并打开了电子邮件.我不想使用电子邮件收据,因为它可能会推迟收件人.
如果它是相关的,我正在使用codeIgniter框架.
在代码中:
struct tagPaint
{
}Paint,//<<<--------------what's this (Paint)?
*pPaint;//<<<-------------and this(*pPaint)?
Run Code Online (Sandbox Code Playgroud)
我的意思是我使用类型为tagPaint的名称Paint和名为pPaint的指针向tagPaint声明变量吗?
谢谢.
我有一些表添加了外键约束.这些与代码生成一起用于在生成的存储过程中设置特定连接.
是否可以通过调用事务中的多个删除来覆盖这些约束,特别是C#中的"TransactionScope"或者是否需要级联删除?
所以,这个问题刚刚被问到:
我的示例代码:
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'关键字强制执行的特定编译器技巧吗?
我动态地向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环境......
编辑:要查看实际页面上的行为:
欢迎任何帮助!
Edit2:问题出在函数"MakeInfoWindowContent"中,它位于"gmaps3.js"中.我不使用DOM来创建元素(我使用字符串),因为必须将此HTML字符串传递给Google Maps(对于信息窗口 - 气球).实际上,在两个不同的地方创建了相同的链接.左边的一个,用DOM功能创建(如本问题所示),适用于所有浏览器,气球中有一个用HTML字符串创建,这个在Safari,Chrome和Opera中效果不佳(链接是在新窗口打开之后,即使返回false也是如此).
编辑3:仍然不知道为什么会发生这种情况......如果有人有想法,请告诉我!
这一定很简单,我仍然无法理解我错在哪里:
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)
我应该覆盖哪种方法才能获得唯一性?
我想在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() …
我正在使用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) .net ×1
analytics ×1
asp.net ×1
c ×1
c# ×1
c++ ×1
codeigniter ×1
constraints ×1
dhtml ×1
dom ×1
email ×1
google-maps ×1
groovy ×1
html ×1
httprequest ×1
ienumerable ×1
java ×1
javascript ×1
linq ×1
php ×1
post ×1
reflector ×1
relationship ×1
sql ×1
sql-server ×1
swig ×1
transactions ×1