我正在使用Grails 1.3.7.我有一些代码使用内置的base64Encode函数和base64Decode函数.在我编码一些二进制数据然后解码生成的字符串并将其写入新文件的简单测试用例中,一切正常.在这种情况下,文件是相同的.
但后来我编写了一个Web服务,它将base64编码数据作为POST调用中的参数.虽然base64数据的长度与传递给函数的字符串相同,但是base64数据的内容正在被修改.我花了DAYS调试它,最后编写了一个测试控制器,它将base64中的数据传递给post,并且还使用正确的base64编码数据获取了本地文件的名称,如下所示:
data=AAA-base-64-data...&testFilename=/name/of/file/with/base64data
Run Code Online (Sandbox Code Playgroud)
在测试函数中,我将输入数据参数中的每个字节与测试文件中的相应字节进行了比较.我发现输入数据参数中的每个"+"字符都被替换为""(空格,序数ascii 32).咦?有什么可以做到的?
为了确保我是正确的,我添加了一行说:
data = data.replaceAll(' ', '+')
Run Code Online (Sandbox Code Playgroud)
果然,数据解码得恰到好处.我尝试使用任意长的二进制文件,它现在每次都有效.但我无法弄清楚在我的生活中将修改ord(43)字符转换为ord(32)的帖子中的数据参数是什么?我知道加号是base64规范中2个有点平台依赖的字符之一,但考虑到我现在在同一台机器上进行编码和解码,我感到非常困惑是什么导致了这个问题.当然,我有一个"修复",因为我可以使它工作,但我很担心我不明白的"修复".
代码太大了,不能在这里发布,但我得到了base64编码,如下所示:
def inputFile = new File(inputFilename)
def rawData = inputFile.getBytes()
def encoded = rawData.encodeBase64().toString()
Run Code Online (Sandbox Code Playgroud)
然后我将编码的字符串写入新的文件,以便稍后用它进行测试.如果我重新加载该文件,我得到相同的rawData:
def encodedFile = new File(encodedFilename)
String encoded = encodedFile.getText()
byte[] rawData = encoded.decodeBase64()
Run Code Online (Sandbox Code Playgroud)
所以这一切都很好.现在假设我接受"编码"变量并将其添加到POST函数的参数中,如下所示:
String queryString = "data=$encoded"
String url = "http://localhost:8080/some_web_service"
def results = urlPost(url, queryString)
def urlPost(String urlString, String queryString) {
def url = new URL(urlString)
def connection = url.openConnection()
connection.setRequestMethod("POST")
connection.doOutput = true
def writer = new OutputStreamWriter(connection.outputStream)
writer.write(queryString) …Run Code Online (Sandbox Code Playgroud) 我们有一些研究人员在MATLAB中做了很多工作.我们经常乐于尝试将他们的代码作为更大的工作流程的一部分,这些工作流程要求将算法放入C/C++或Python中.我见过MathWorks宣传一个工具来创建本机C或C++代码.代码有多好?它是否支持工具箱?我仍然认为它是一个早期的原型设计工具,但想知道代码有多好.思考?
我正在使用带有Grails 1.3.7的石英插件.我需要加载平衡/群集使用石英作业的服务器应用程序.显然这是支持但我发现所有谷歌搜索结果和文档中的链接都被破坏了.我发现了一些原始的Java示例,但我认为Grails有更粗略的方法来做到这一点.我需要的只是一个用作模板的简单示例.我知道我需要以某种方式启用quartz来使用JDBC来存储作业和管理锁定.
我认为链接到单个样本会做到这一点.但实际上,每当我发现一些看起来很有前景的东西时,它就会指向兵马俑网站上的断开链接.几乎每个网站最终都会引导我到这里:http://www.opensymphony.com/quartz/wikidocs/TutorialLesson9.html但是当我看到兵马俑的网站时,我看到Java的东西,但没有grails.如果Java是唯一的方法,那么就这样吧,但我觉得必须有一些grails专业知识在那里的某个地方!
TIA.
我有一个相当大的问题.我希望这是由于我自己的愚蠢,而不是某种错误.我有需要知道屏幕尺寸的代码.我还没有找到一种可行的方法.在iPad 2和iPhone4/iPod Touch 4 iOS设备上使用Flash Builder 4.5的生产版本.一般来说,我的应用程序运行良好但我无法确定程序启动时的屏幕大小和方向.让我解释一下我遇到的问题:
在进入"init"函数时,由ADDED_TO_STAGE事件调用的函数,stage.stageHeight和stage.stageWidth的值都为0.
我可以查询Capabilities.screenResolutionX和Capabilities.screenResolutionY,但它们是错误的.它们具有原始X和Y值,但不管方向如何.所以例如我通过screenResolutionX以横向模式开始包含768(或其他)而不是1024.
我查看stage.width和stage.height的值,它们没有有效值.
我有一个针对EVENT.RESIZE的onResize函数设置,但是如果应用程序在已经处于横向模式时从设备启动时它不会被调用.如果我以纵向模式启动应用程序然后旋转,则会调用它.
所以我的问题是我应该在应用程序启动时查询应该知道应用程序的真实宽度和高度.必须有办法做到这一点,但显然不使用上述任何方法!
顺便说一句,这是在iOS设备上.我不能说它如何在别人身上发挥作用.我已经通过打印结果并在调试器中运行它来确认这些结果.
毫无疑问又是一个愚蠢的新手问题!我在 Grails 控制器中有一个字节数组,其中包含视频文件(确切地说是 *.mp4 文件)的内容。我熟悉如何从 grails 控制器渲染 JSON、XML 和其他基本类型,但我找不到任何显示如何输出视频的示例。本质上我想做以下事情:
render bytes as MP4
Run Code Online (Sandbox Code Playgroud)
我意识到我可能需要一个诸如以下的构造:
render(text:"<xml>some xml</xml>",contentType:"video/mpeg",encoding:"UTF-8")
Run Code Online (Sandbox Code Playgroud)
但我不清楚如何获取其中的字节数组。显然我不是渲染类似 html 内容的专家。我隐藏在库函数后面太久了!任何指向参考或示例的指针将不胜感激。
因此,如果它有助于将建议指向正确的方向,则视频中的字节来自我正在使用 jets3t 库读取的 S3 对象。
标题可能会产生误导.我真正想要的是知道控制器中闭包的名称.但是Groovy中的闭包始终是匿名的,因此闭包本身没有名称.但是闭包被分配给一个变量,我想知道我是否可以获得该变量的名称.也许一个例子会有所帮助.在Grails控制器中想象我有以下内容:
def get_data = {
Map results = [ 'errorCode' = -1, 'method' : 'get_data' ]
...
render results as JSON
}
Run Code Online (Sandbox Code Playgroud)
在Map中称为结果,有一个名为'method'的元素,我希望将其分配给此闭包的名称(或者将闭包更加精确的变量).这可能吗?这里的想法是我想概括结果图并想要自动填充一个名为'method'的元素.本能地感觉这应该是可能的,但我没有发现任何类似的用例来说明如何.任何帮助非常感谢.
我发现混合结果谷歌搜索.我需要解析SPSS .sav文件以发现数据布局并提取调查结果.第一步是阅读数据的"模式".例如,我需要知道问题及其允许的响应类型.我打算在我自己的SQL表中对这些数据进行建模,这样我就可以根据我的应用程序要求对其进行切片和切块.第二步是使用受访者答案填充我的数据模型.查看SPSS sav文件,我相信它有我正在寻找的两种类型的数据.
如果我不严格要求,我不需要或不需要昂贵的SPSS软件.我们不会对这些数据进行统计,只根据答案过滤器选择受访者的子集.SPSS文件将由许可SPSS的合作伙伴公司提供.我不需要将任何数据反馈回SPSS; 我的用例是只读的.
我可以使用Python,带或不带Groovy的Java,C/C++作为我的解析器程序.该程序将在数据收集结束时运行一次,因此性能不是特别重要.理想情况下,我希望我的代码是跨平台的,所以我可以在我的Mac上进行开发并部署到Linux,但如果必须,我可以使用Windows
我发现的很多东西要么是2004年的java类,要么是需要IBM的DLL并且是特定于Windows的现代Python代码.基于我对需求的快速解释,我将非常感谢SO社区的建议.我认为我的需求很简单,但还没有找到我所希望的.开源库是理想的,但我甚至会以合理的价格购买简单的商业解决方案.