我的任务是使用Mathematica通过JSP使用HTTP POST和XML与第三方的Web服务器进行交互.我需要发送的示例:
<html>
<head></head>
<body>
<form method="post" action="http://www. ... .com/login.jsp">
<textarea name="xml" wrap="off" cols="80" rows="30" spellcheck="false">
<loginInfo>
<param name="username" type="string">USERNAME</param>
<param name="pwd" type="string">PASSWORD</param>
</loginInfo>
</textarea>
<input type="hidden" name="Login" value="1"/>
<input type="submit" name="go" value="go" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我将收到的示例(XML):
<UserPluginInfo>
<PluginInfo>
<param name="pluginUid" type="string">1</param>
</PluginInfo>
<UserInfo>
<param name="username" type="string">USERNAME</param>
</UserInfo>
</UserPluginInfo>
Run Code Online (Sandbox Code Playgroud)
我发现Robert Raguet-Schofield在2009年撰写了一篇关于与Twitter交互的博客,该博客使用J/Link访问Java来执行HTTP POST并处理响应.
我的问题是,这是完成我的任务的最佳方法,还是自2009年以来Mathematica发展并且有更好的方法(更直接)完成我的任务?
以下代码(对不起长度)在iOS 4.3下显示奇怪的行为(也许是其他版本).在此示例中,有三个UITextFields具有三个不同大小的键盘.如果您开始编辑一个文本字段,然后触摸"返回"解除键盘,每次正确返回UIKeyboardWillShowNotification和UIKeyboardDidShowNotification使用键盘大小UIKeyboardFrameBeginUserInfoKey.
见下文:
- (void) keyboardWillShowNotification:(NSNotification *)aNotification
和
- (void) keyboardDidShowNotification:(NSNotification *)aNotification
请注意,这是预期的行为.
action reported keyboard size expected keyboard size
--------------------- ---------------------- ----------------------
touch one & return 100 100
touch two & return 200 200
touch normal & return 216 216
n & return keyboard size(n) keyboard size(n)
Run Code Online (Sandbox Code Playgroud)
意外的行为是,如果您开始编辑文本字段,则会报告(预期)第一个键盘的大小.当您触摸第二个文本字段(不触摸返回)时,将报告(意外)第一个键盘的大小,而不是第二个键盘的大小.当您触摸第三个文本字段(不触及返回)时,将报告第二个键盘大小的大小(意外),而不是第三个大小的大小.对于第二次到第n次,似乎它报告的是先前键盘的大小而不是将要显示的大小.
action reported keyboard size expected keyboard size
------------ ---------------------- ----------------------
touch one 100 100
touch two 100 200
touch normal 200 216
touch …Run Code Online (Sandbox Code Playgroud) 我有以下字符串:"20110103224832494"它采用以下格式:yyyyMMddHHmmssSSS.yyyy是年份,MM是月份,dd是日,HH是小时,mm是分钟,ss是秒,SSS是毫秒.
我认为以下内容会起作用:
DateList[{"20110103224832494",
{"Year", "Month", "Day", "Hour", "Minute", "Second", "Millisecond"}}
]
Run Code Online (Sandbox Code Playgroud)
但回报:
DateString::str: String 20110103224832494 cannot be interpreted as a date in
format {Year,Month,Day,Hour,Minute,Second,Millisecond}. >>
Run Code Online (Sandbox Code Playgroud)
如果这样有效,它会有效吗?
我有适用于Mac的Mathematica 8.0和Wolfram Workbench 2.0.我想使用MUnit对我正在创建的包进行单元测试,但我发现MUnit上缺少文档令人沮丧.
Sal Mangano的Mathematic Cookbook是最好的资源.第19.11节介绍了"将Wolfram Workbench的MUnit包集成到前端".
我想一旦我将MUnit暴露给前端,我将能够查询MUnit API?.只有一个问题,我找不到MUnit包.我尝试按照书中的建议找到MUnit目录:
find / -name MUnit -print 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
,但没有运气.
我在App Store中为4.2编译了一个在iOS 5.0下运行时表现奇怪的应用程序.我已将其跟踪到resignFirstResponder在iOS 5.0下被调用两次,而它仅在iOS 4.2和4.3下被调用一次.
我有一个从UITextField我覆盖的地方派生出来的类resignFirstResponder.请参阅下面的示例代码.
在iOS 4.2和4.3下,我在控制台中看到以下内容:
textFieldShouldReturn
resignFirstResponder
textFieldDidEndEditing
Run Code Online (Sandbox Code Playgroud)
在iOS 5.0下,我在控制台中看到以下内容:
textFieldShouldReturn
resignFirstResponder
resignFirstResponder
textFieldDidEndEditing
Run Code Online (Sandbox Code Playgroud)
在设备和模拟器上运行代码可以获得持续的结果.我错过了什么或这是一个错误吗?
#0 -[BugTextField resignFirstResponder] (self=0x681b530, _cmd=0x3769b41) at /Users/.../BugTextField.m:14
#1 0x006c05a6 in -[UIFieldEditor resignFirstResponder] ()
#2 0x006374e3 in -[UIView(Hierarchy) _willMoveToWindow:] ()
#3 0x006362c2 in __UIViewWillBeRemovedFromSuperview ()
#4 0x006360d7 in -[UIView(Hierarchy) removeFromSuperview] ()
#5 0x006bfff7 in -[UIFieldEditor becomeFieldEditorForView:] ()
#6 0x006ae37b in -[UITextField _resignFirstResponder] ()
#7 0x006eb8d4 in -[UIResponder _finishResignFirstResponder] ()
#8 0x006eba20 in -[UIResponder resignFirstResponder] () …Run Code Online (Sandbox Code Playgroud) 我有以下数据对列表:
pairs = {{3, "John"}, {1, "Bob"}, {2, "Jane"}, {1, "Beth"}};
Run Code Online (Sandbox Code Playgroud)
我想找到具有最小第一个值的数据对.在上面的示例中,我正在寻找的是:{1, "Bob"}或者{1, "Beth"},但不是两者.
我可以Sort[pairs, #1[[1]] < #2[[1]] &][[1]]用来完成这个.然而,由于即使是速度最快的O> O(n),也让我觉得必须有一种更有效的方法来做到这一点.
以下给出了正确的答案:
minPair = pairs[[1]];
Map[Function[x, If[x[[1]] < minPair[[1]], minPair = x]], pairs];
minPair;
Run Code Online (Sandbox Code Playgroud)
但是,它比Sort上面的使用慢.我知道,我的Mathematica-fu还没有,所以我的问题.
SetAttributes[TimingDo, HoldRest];
TimingDo[note_String, func_] :=
results =
Append[results, {note , func, Timing[Do[func, {iterations}]][[1]]}];
pairs = {{3, "John"}, {1, "Bob "}, {2, "Jane"}, {1, "Beth"}};
results = {};
iterations = 10000;
TimingDo[ "mmorris[Sort]: ",
Sort[pairs, #1[[1]] < #2[[1]] …Run Code Online (Sandbox Code Playgroud) 以下代码显示了iOS 4.3下的奇怪行为(也许是其他版本).在此示例中,显示UIDatePicker其日期设置为的日期4 Aug 2011 2:31 PM.在UILabel下面UIDatePicker显示的时间以供参考.UIButtons下面的三个,标记为1,5,10,设置minuteInterval为UIDatePicker.
攻丝1 -在显示选择的日期UIDatePicker是4 Aug 2011 2:31 PM,与微小间隔是1,这是可以预料的.
攻丝5 -在显示选定的日期UIDatePicker是4 Aug 2011 2:35 PM,和分钟间隔为5,这是可以预料的(有人会说时间应该四舍五入,但是这不是一个巨大的问题).
攻丝10 -示出了在所选择的日期UIDatePicker是4 Aug 2011 2:10 PM,与微小间隔10好微小间隔是正确的,但所选择的时间是2:10?人们可能会预期2:40(如果向上舍入)或2:30(如果向下舍入).
BugDatePickerVC.h
#import <UIKit/UIKit.h>
@interface BugDatePickerVC : UIViewController {
NSDateFormatter *dateFormatter;
NSDate *date;
UIDatePicker *datePicker;
UILabel *dateL;
UIButton *oneB;
UIButton *fiveB;
UIButton *tenB;
}
- (void) buttonEventTouchDown:(id)sender;
@end
Run Code Online (Sandbox Code Playgroud)
BugDatePickerVC.m
@implementation …Run Code Online (Sandbox Code Playgroud) 我在一个.mt文件中编写了许多测试用例,这些测试用例共享常见的设置(和拆卸)过程.我希望看到类似JUnit的@Before/ @After,但MUnit软件包中没有任何内容跳出来,这样就可以实现这一点.老实说,MUnit软件包文档比Wolfram Workbench的MUnit文档要好一些,但它还远未完成. 查看MUnit包的说明.
所以在我重新发明轮子之前,我想我会检查一下我是否错过了MUnit中的某些内容,或者是否有人的模式运行良好?
所以根据Leonid Shifrin的最初答案(他把我的答案放在一起时更新了他的答案)这是(我)在哪里(当时)...
TestPlus.mt
(* Mathematica Test File *)
(* x is a global value *)
x=0;
SetUp[] := Module[{}, x=1;];
TearDown[] := Module[{}, x=0;];
(* test SetUp[] *)
SetUp[];
Test[x, 1, TestID->"SetUp-20120103-F2U9V6"]
(* test TearDown[] *)
TearDown[];
Test[x, 0, TestID->"TearDown-20120103-O4R6M7"]
(* test plus --contrived tests-- *)
SetUp[];
Test[x+0, 1, TestID->"Plus-20120103-S5D9X6"]
TearDown[];
SetUp[];
Test[x+1, 2, TestID->"Plus-20120103-D7Q3E0"]
TearDown[];
SetUp[];
Test[x+2, 3, TestID->"Plus-20120103-F0S4P9"]
TearDown[];
Run Code Online (Sandbox Code Playgroud)