我的问题与这个问题有些相关 - 具有通用参数类型的函数 - 但我无法弄清楚如何做我想要的事情.
我想定义一个'后代函数来包含对各种C#类的'Descendants'的调用,如下所示:
让后代名称(xDocument:XDocument)= xDocument.Descendants名称
让后代命名(xElement:XElement)= xElement.Descendants name
这种方法不起作用,因为我们有'后代'的重复定义.
我认为可以使用内联函数和静态解析参数来定义以下方法来代替:
let inline descendants name (xml : ^x when ^x : (member Descendants : XName -> seq<XElement>)) =
xml.Descendants name
Run Code Online (Sandbox Code Playgroud)
但是在尝试这样做时我遇到了这个错误:
根据此程序点之前的信息查找不确定类型的对象.在此程序点之前可能需要类型注释来约束对象的类型.这可以允许解析查找.
有没有办法可以写第二个功能来做我想做的事情?
我一直在命令行上开发个人使用的应用程序.现在我必须为广大受众开发一个Android应用程序.
如果我现在开始,我会制作和可怕的GUI.我首先需要了解如何在触摸界面上构建清晰,高效和可用的GUI.
有什么建议?
当我在某些地方进行git登录时,输出会搞砸,并且不会让我回到命令行.在我的一些回购中,它工作正常.有任何想法吗?输出粘贴在下面:
[server]$ git log
commit c84acb29115822d94fe0112bacfb835911ffaa11
Author: My Name <myname@server.dreamhost.com>
Date: Sun Feb 14 03:13:05 2010 -0800
Correct spelling mistake
commit 4f613bdddc2b4965b75914c08017a916fa3d07be
Author: My Name <myname@server.dreamhost.com>
Date: Sat Feb 13 08:39:52 2010 -0800
slightly better gradient
commit 96d2a2bb74c287af18a491f616ce784cc30ff1ea
Author: My Name <myname@server.dreamhost.com>
Date: Sat Feb 13 08:31:15 2010 -0800
Add gradient background under menu
commit 80fab463530791e6e9ebb06e475b67211b88a8d4
Author: My Name <myname@server.dreamhost.com>
Date: Fri Feb 12 14:33:04 2010 -0800
change copy back
commit f0952894251854432a6b960d39460a926c819202
Author: My Name <myname@server.dreamhost.com>
Date: Fri Feb 12 …Run Code Online (Sandbox Code Playgroud) 我正在开发一个使用回形针在Amazon S3上存储东西的rails应用程序.该应用程序托管在Heroku上.我正在开发Ubuntu Karmic.
我要描述的问题发生在开发(在我的localhost上)和生产(在Heroku上).
将S3信誉传递给回形针的标准方法是将它们放入config/s3.yml中,如下所示:
access_key_id: 12345678
secret_access_key: 903490409fdf09fshsfdoif/43432
Run Code Online (Sandbox Code Playgroud)
当我这样做时,一切正常.但这使我很难与其他人分享我的代码,因此Heroku建议了另一种方法 - http://docs.heroku.com/config-vars.
他们建议您将S3_KEY和S3_SECRET放入.bashrc中,如下所示:
S3_KEY=12345678
export S3_KEY
S3_SECRET=903490409fdf09fshsfdoif/43432
export S3_SECRET
Run Code Online (Sandbox Code Playgroud)
然后他们建议您创建config/initializers/s3.yml(注意稍微不同的路径)并将以下内容放入该文件中:
AWS::S3::Base.establish_connection!(
:access_key_id => ENV['S3_KEY'],
:secret_access_key => ENV['S3_SECRET']
)
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,paperclip抛出一个摇摆器并吐出以下错误信息:
undefined method `stringify_keys' for #<String:0xb6d6c3f4>
/vendor/plugins/paperclip/lib/paperclip/storage.rb:176:in `parse_credentials'
/vendor/plugins/paperclip/lib/paperclip/storage.rb:138:in `extended'
/vendor/plugins/paperclip/lib/paperclip/storage.rb:137:in `instance_eval'
/vendor/plugins/paperclip/lib/paperclip/storage.rb:137:in `extended'
.... other stuff
Run Code Online (Sandbox Code Playgroud)
很明显,这一切都在storage.rb模块中开始.单步执行堆栈跟踪:
标记了第176行的parse_credentials方法 - 这是代码中显示的调用:
def parse_credentials creds
creds = find_credentials(creds).stringify_keys
(creds[RAILS_ENV] || creds).symbolize_keys
end
Run Code Online (Sandbox Code Playgroud)
parse_credentials方法尝试调用另一个方法find_credentials,这就是我认为问题所在.下面是find_credentials的代码:
def find_credentials creds
case creds
when File
YAML::load(ERB.new(File.read(creds.path)).result)
when String
YAML::load(ERB.new(File.read(creds)).result)
when Hash
creds
else
raise ArgumentError, "Credentials are …Run Code Online (Sandbox Code Playgroud) 我试图从Project Euler解决问题#276,但到目前为止还没有成功.
考虑具有整数边a,b和c的三角形,其中a≤b≤c.如果gcd(a,b,c)= 1,则整数边三角形(a,b,c)称为基元.存在多少个原始整数边三角形,周长不超过10 000 000?
我的代码中的瓶颈是GCD功能.我的样本输入几乎占用了90%的执行时间.我很想听听关于如何改进解决方案的提示和评论...我的解决方案是用C语言编写的,但它很简单:
#include <stdio.h>
#include <math.h>
#define sides 3
// This is where my program spends most of its time
size_t bi_gcd (size_t a, size_t b);
size_t tri_gcd (size_t a, size_t b, size_t c);
size_t count_primitive_triangles (size_t maximum_perimeter);
int main()
{
printf( "primitive_triangles = %lu \n",
count_primitive_triangles(1000) );
}
size_t bi_gcd (size_t a, size_t b)
{
size_t t;
while(b != 0)
{
t = b;
b = a % …Run Code Online (Sandbox Code Playgroud) 我想使用Grails中的JSON渲染方法渲染复杂类型,类似于下面的JSON输出:
{"authors":[{"id":1,"name":"Author 1","books":[{"id":1,"name":"Book 1"},{"id":2,"name":"Book 2"}]},{"id":2,"name":"Author 2","books":[{"id":1,"name":"Book 1"},{"id":2,"name":"Book 2"}]}]}
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码执行此操作,其中Author和Book是包含属性id和name以及Author hasMany Books(association)的域类.
def results = Authors.list()
render(contentType:"text/json") {
authors = array {
for(a in results) {
author id:a.id, name:a.name, books: array = {
def bookresults = Book.findAllByAuthor(a)
for(b in bookresults) {
book id:b.id, name:b.name
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
它仅适用于作者,但是当我尝试遍历每个作者的书籍并渲染它们时,代码就会失败.
有任何想法吗?
最终代码更新了问题
感谢Dave的回答,我最终得到了以下代码,它按预期工作:
def authors = []
for (a in Author.list()) {
def books = []
def author = [id:a.id, name:a.name, books:books]
for (b in Book.findAllByAuthor(a)) {
def book = [id:b.id, …Run Code Online (Sandbox Code Playgroud) 我有一个ANSI编码的文件.但是它里面显示阿拉伯字母.这个文本文件是由一些程序生成的(我没有信息),但似乎有某种内部编码(如果我可能会说,如果可能的话),阿拉伯字母就会出现.
有这样的事吗?如果没有,ANSI文件如何显示阿拉伯字母?
*如果可能,请在Java代码中解释
第01版
当我在Notepad ++中打开它时,它显示页面编码是ANSI.请查看此照片:
http://www.4shared.com/file/221862075/e8705951/text-Windows.html
第02版
你可以从以下位置检查文件:
这是一个理论问题,我想知道是否有一个好的方法来找出 WHERE 语句中的哪个条件匹配。
假设我有一个这样的查询:
SELECT * FROM table WHERE
COND1 OR
(COND2 AND COND3) OR
COND4
Run Code Online (Sandbox Code Playgroud)
有什么方法可以知道哪些条件使给定的行匹配(或不匹配)?
我想到的一个解决方案是向 SELECT 添加 CASE 子句,并重新运行该行的所有 WHERE 条件:
SELECT *, which_cond = CASE .... END CASE ...
Run Code Online (Sandbox Code Playgroud) 我有一些COM组件,我从一些c#dll调用.
我还有一个使用该.dll的winforms应用程序.
当我关闭应用程序时,我得到以下异常:
无法使用已与其基础RCW分离的COM对象.
堆栈跟踪显示此异常来自.dll中的析构函数.我实现了这个析构函数来调用COM中的一些清理方法.
为什么会这样?如何最好地解决它?
from Tkinter import *
import socket, sys
from PIL import Image, ImageTk
root = Tk()
root.title("Whois Tool")
root.resizable(0, 0)
text = Text()
text1 = Text()
image = Image.open("hacker2.png")
photo = ImageTk.PhotoImage(image)
label = Label(root, image=photo)
label.pack()
text1.config(width=15, height=1)
text1.pack()
def button1():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("com.whois-servers.net", 43))
s.send(text1.get("1.0", END) + "\r\n")
response = ''
while True:
a = s.recv(4096)
response += a
if a == '':
break
s.close()
text.insert(END, response)
def clear():
text.delete("1.0", END)
b = Button(root, text="Enter", width=10, height=2, …Run Code Online (Sandbox Code Playgroud)