问题列表 - 第20389页

Perl中的异常有什么问题?

另一个问题的讨论让我想知道:Perl缺少其他编程语言的异常系统是什么?

Perl的内置异常有点特别,因为它们像Perl 5对象系统一样,在事后的想法中加以分类,并且它们超出了其他不专门用于异常的关键字(evaldie).

与具有内置try/throw/catch类型语法的语言相比,语法可能有点难看.我通常这样做:

eval { 
    do_something_that_might_barf();
};

if ( my $err = $@ ) { 
    # handle $err here
}
Run Code Online (Sandbox Code Playgroud)

有几个CPAN模块提供语法糖来添加try/catch关键字,并允许轻松声明异常类层次结构等等.

我在Perl的异常系统中看到的主要问题是使用特殊的全局$@来保存当前错误,而不是catch从范围的角度来看可能更安全的专用类型机制,尽管我从来没有亲自遇到任何问题$@得到了.

syntax perl exception-handling exception

29
推荐指数
4
解决办法
4597
查看次数

有没有一种简单的方法可以将Future <Future <T >>转变为Future <T>?

我有一些代码向另一个线程提交请求,该线程可能会也可能不会将该请求提交给另一个线程.这产生了一种返回类型Future<Future<T>>.是否有一些非令人发指的方式立即将其转变为Future<T>等待整个未来链条的完成?

我已经在使用Guava库来处理其他有趣的并发内容,并且作为Google Collections的替代品并且它运行良好,但我似乎无法找到适合这种情况的东西.

java concurrency guava

19
推荐指数
2
解决办法
3571
查看次数

替换python中字符串的一个字符

在python中,字符串是否可变?该行someString[3] = "a"抛出错误

TypeError:'str'对象不支持项目分配

我可以看到为什么(因为我可以编写someString [3] ="test",这显然是非法的)但是有一种方法可以在python中执行此操作吗?

python

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

Ghuloum使用什么方案?

我正在努力通过编译器: Abdulaziz Ghuloum的后端到前端(并再次回到前面).它似乎缩写为完整课程/研讨会中的预期,所以我试图自己填写这些内容.

例如,我试图在DrScheme的R5RS风格中使用他的测试框架,但它似乎不喜欢宏的东西:

src/ghuloum/tests/tests-driver.scm:6:4: read: illegal use of open square bracket
Run Code Online (Sandbox Code Playgroud)

我已经阅读了他关于课程的介绍文章,编译器构建的增量方法,它对所使用的技术进行了很好的概述,并提到了一些可能需要为"额外信用"实现的功能的方案,但他没有没有提到他在课程中使用的计划.

更新

我还在深入研究原始问题(调查以下Eli建议的Petit Scheme等选项),但发现了一个与Gholoum工作有关的有趣链接,所以我将其包括在内.

[Ikarus Scheme](http://en.wikipedia.org/wiki/Ikarus_ (Scheme_implementation ))是Ghuloum的想法的实际实现,并且似乎是他的博士学位的一部分.工作.它应该是R6RS的首批实现之一.我现在正在尝试安装Ikarus,但是配置脚本不想识别我的系统安装的libgmp.so,所以我的问题仍未得到解决.

以下示例似乎适用于使用Pretty Big在DrEd中运行的PLT 2.4.2

(require lang/plt-pretty-big)

(load "/Users/donaldwakefield/ghuloum/tests/tests-driver.scm") 
(load "/Users/donaldwakefield/ghuloum/tests/tests-1.1-req.scm") 
(define (emit-program x) 
  (unless (integer? x) (error "---")) 
  (emit " .text") 
  (emit " .globl scheme_entry") 
  (emit " .type scheme_entry, @function") 
  (emit "scheme_entry:") 
  (emit " movl $~s, %eax" x) 
  (emit " ret")
  )
Run Code Online (Sandbox Code Playgroud)

尝试用#lang方案替换require指令会导致错误消息

foo.scm:7:3: expand: …
Run Code Online (Sandbox Code Playgroud)

scheme racket

8
推荐指数
1
解决办法
1926
查看次数

Symfony表单框架 - 实现更改密码功能的最佳方法?

我试图了解Symfony 1.4中表单框架.我已经阅读了"更多与symfony"一书中非常详细的部分,但我仍然不确定如何实现简单的"更改密码"功能.

要求非常基本,

  1. 会有两个字段new_password,和confirm_new_password.两者都是输入字段.
  2. new_password字段将被验证为包含字母和数字的6到30个字符之间的字符串.
  3. confirm_new_password字段将被验证以new_password准确匹配该字段.

现在,我现在实现了这个,

  • 在表单中添加2个新字段.
  • new_password字段中添加字符串验证器以检查字符串长度.
  • 将字符串验证器添加到confirm_new_password字段以确保填写.
  • 然后验证新密码是有效的,并与自定义帖子验证器中的确认密码相匹配.我之所以这样做,是因为confirm_new_password在该new_password字段有效之前我不想验证该字段.

现在到了我的问题.在阅读了上面提到的文章之后,我开始认为我应该在单个小部件或子形式中包含两个字段,因为它们相互依赖,而另一个则无用.

我想知道人们的想法是什么,如果有人实施了,他们是如何做到的?

谢谢

注意:没有current_password字段,因为这是我的管理区域.

php forms frameworks symfony1

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

如何强制python的VM打印堆栈跟踪?

我正在处理一个python编写的服务器,它会锁定并停止工作,包括记录.我想知道是否有一个python相当于java的"kill -3"信号,至少打印出当前的堆栈跟踪.

python debugging

8
推荐指数
2
解决办法
3768
查看次数

为什么LinkedHashSet <E>扩展HashSet <e>并实现Set <E>

今天打开了LinkedHashSet源代码,发现了一些有趣的事情:

public class LinkedHashSet<E>
    extends HashSet<E>
    implements Set<E>, Cloneable, java.io.Serializable {
Run Code Online (Sandbox Code Playgroud)

问题是:当HashSet已经是Set时,为什么他们需要"extends HashSet"和"implements Set"?

java collections hashtable

26
推荐指数
2
解决办法
4324
查看次数

为什么 WCF Stream 响应在写入磁盘时会损坏?

我想编写一个 WCF Web 服务,可以通过线路将文件发送到客户端。所以我有一个发送流响应的设置。这是我在客户端的代码:

private void button1_Click(object sender, EventArgs e)
{
    string filename = System.Environment.CurrentDirectory + "\\Picture.jpg";
    if (File.Exists(filename))
        File.Delete(filename);

    StreamServiceClient client = new StreamServiceClient();

    int length = 256;
    byte[] buffer = new byte[length];
    FileStream sink = new FileStream(filename, FileMode.CreateNew, FileAccess.Write);
    Stream source = client.GetData();
    int bytesRead;
    while ((bytesRead = source.Read(buffer,0,length))> 0)
    {
        sink.Write(buffer,0,length);
    }
    source.Close();
    sink.Close();
    MessageBox.Show("All done");
}
Run Code Online (Sandbox Code Playgroud)

一切都进展顺利,没有错误或异常。问题是,当我打开正在传输的 .jpg 文件时,该文件被报告为“已损坏或太大”。

我究竟做错了什么?

在服务器端,这是发送文件的方法。

public Stream GetData()
{
    string filename = Environment.CurrentDirectory+"\\Chrysanthemum.jpg";
    FileStream myfile = File.OpenRead(filename);
    return myfile;
} …
Run Code Online (Sandbox Code Playgroud)

.net c# streaming wcf stream

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

通过Web传输实体框架对象并通过JSON返回的最佳方法

我有一些MVC代码将EF 3.5对象序列化为匿名类型,以便作为JSON结果返回到我页面上的AJAX调用.我遇到的障碍是当我通过JSON将对象发送回服务器时(并让ModelBinder将它反序列化为我的EF类型),我必须手动在我的Entity Framework上下文中更新它.或者至少那就是我现在正在做的事情.它没有EntityKey,因此附加它失败.我最终必须查找旧对象并按属性更新它的属性.围绕这个想法吗?是用我的对象传递EntityKey的解决方案吗?

这就是我所拥有的:

    public void Update(Album album)
    {
        using (var db = new BandSitesMasterEntities())
        {
            var albumToUpdate = db.Album.First(x => x.ID == album.ID);

            albumToUpdate.AlbumTitle = album.AlbumTitle;
            albumToUpdate.Description = album.Description;
            albumToUpdate.ReleaseYear = album.ReleaseYear;
            albumToUpdate.ImageURL = album.ImageURL;
            albumToUpdate.OtherURL = album.OtherURL;

            db.SaveChanges();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这就是我想做的事情,或类似的事情:

    public void Update(Album album)
    {
        using (var db = new BandSitesMasterEntities())
        {
            db.Attach(album)
            db.SaveChanges();
        }
    }
Run Code Online (Sandbox Code Playgroud)

model-view-controller asp.net-mvc json entity-framework

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

C++控制全局对象的析构函数顺序

我有一个类(A)在其构造函数和析构函数中访问(间接通过静态方法)另一个类(B)中的静态变量(STL容器).

对象可以是全局的,全局常量,另一个类的静态成员,存储在其他类(可能本身具有全局或静态实例)中,或者基本上可以是c ++对象的任何其他位置.

如果A对象在B中的静态成员之前构造或在B中的静态成员之后被破坏,则会在某些时候导致崩溃(通常是访问冲突).

有没有一些方法,以保证(除了那些已经泄漏,因为按照定义,"迷失"等不会被破坏任何方式)A类的所有实例构造之后和在B的静态变量破坏?

我已经看到了一些解决方案,用于使特定变量在另一个之前/之后被构造/销毁,但是不是给定类型的所有实例的一般情况,因此我不确定如何处理它.

c++ destructor memory-management global-variables

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