问题列表 - 第16271页

从信号处理程序中抛出异常

我们有一个库,可以处理错误报告的许多方面.我的任务是将此库移植到Linux.当我的小测试套件运行时,其中一个测试失败了.测试的简化版本如下所示.

// Compiler: 4.1.1 20070105 RedHat 4.1.1-52
// Output: Terminate called after throwing an instance of 'int' abort

#include <iostream>
#include <csignal>
using namespace std;

void catch_signal(int signalNumber)
{
    signal(SIGINT, SIG_DFL);
    throw(signalNumber);
}

int test_signal()
{
    signal(SIGINT, catch_signal);

    try
    {
        raise(SIGINT);
    }
    catch (int &z)
    {
        cerr << "Caught exception: " << z << endl;
    }
    return 0;
}

int main()
{
    try
    {
        test_signal();
    }
    catch (int &z)
    {
        cerr << "Caught unexpected exception: " << z << endl; …
Run Code Online (Sandbox Code Playgroud)

c++ signals exception

22
推荐指数
3
解决办法
2万
查看次数

Java可执行jar.这段代码做了什么?

我正在看Yahoo的YUI压缩器可执行jar,他们有这个类,从Manifest文件链接为"Main-Class":

package com.yahoo.platform.yui.compressor;

import java.lang.reflect.Method;

public class Bootstrap {

    public static void main(String args[]) throws Exception {
        ClassLoader loader = new JarClassLoader();
        Thread.currentThread().setContextClassLoader(loader);
        Class c = loader.loadClass(YUICompressor.class.getName());
        Method main = c.getMethod("main", new Class[]{String[].class});
        main.invoke(null, new Object[]{args});
    }
}
Run Code Online (Sandbox Code Playgroud)

这对我来说看起来像一个无用的包装.为什么不直接把它YUICompressor作为主类呢?这样做有什么理由吗?

谢谢.

java executable-jar

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

反映参数名称:滥用C#lambda表达式还是语法亮度?

我正在看MvcContrib网格组件,我很着迷,但同时被网格语法中使用的语法技巧击退:

.Attributes(style => "width:100%")
Run Code Online (Sandbox Code Playgroud)

上面的语法将生成的HTML的style属性设置为width:100%.现在如果你注意,"风格"没有指定,是从表达式中参数的名称推断出来的!我不得不深入研究这个并发现"神奇"发生的地方:

Hash(params Func<object, TValue>[] hash)
{
    foreach (var func in hash)
    {
        Add(func.Method.GetParameters()[0].Name, func(null));
    }
}
Run Code Online (Sandbox Code Playgroud)

实际上,代码使用正式的编译时,参数名来创建属性名称 - 值对的字典.结果语法结构确实非常具有表现力,但同时也非常危险.lambda表达式的一般用法允许替换使用的名称而没有副作用.我在一本书中看到一个例子,说collection.ForEach(book => Fire.Burn(book))我知道我可以用我的代码编写collection.ForEach(log => Fire.Burn(log)),这意味着同样的事情.但是使用MvcContrib网格语法突然间,我发现代码主动查找并根据我为变量选择的名称进行分解!

这是C#3.5/4.0社区和lambda表达爱好者的常见做法吗?或者是一个我不应该担心的流氓一招特立独行?

c# asp.net-mvc lambda mvccontrib

425
推荐指数
18
解决办法
3万
查看次数

在Ruby中实现to_int和to_str的后果

有一个类,它暴露了一个字符串值和一个int值(分别是一个命令输出和退出代码).除了通过to_s和暴露它们之外to_i,我也在使用,to_str并且to_int像这样:

class Status
  def to_s
    @output
  end
  alias :to_str :to_s

  def to_i
    @status.exitstatus
  end
  alias :to_int :to_i
end
Run Code Online (Sandbox Code Playgroud)

我的想法是能够在尽可能多的情况下使用此对象.将它强制转换为字符串或int会增加可用性.例如,我可以用字符串连接对象:

a_string = "Output was: " + results
Run Code Online (Sandbox Code Playgroud)

(我想用这个作为int强制的例子,但Fixnum.+不喜欢它,所以它实际上不起作用:)

an_int = 1 + results
Run Code Online (Sandbox Code Playgroud)

到目前为止,我所读过的所有内容都表示,这可能是一件"糟糕"的事情.常见的主题是这样的:" 当to_s/ to_i您的对象可以表示为字符串/ int时,to_str//to_int仅当您的对象基本上是字符串/ int时".

毫无疑问,我的课程不是"基本上"字符串或整数.但是我对这个规则有一些问题:

  1. 它使我的课程不那么灵活/可用.例如:如果我没有Status.to_str,我无法使用String.+将Status输出与另一个字符串连接起来.
  2. 这似乎违反了鸭子打字的精神.对象的用户(即:将其作为参数获取的方法)不应该关心该对象什么,它应该只关心它能做什么.(在这种情况下,"do"表示"可以表示为字符串/ int".)
  3. "基本上是一个字符串/ int"的参数对我来说非常模糊.例如,你会看到Float.to_int很多提到的.故事说,由于浮点数始终具有整数分量,因此to_int是一种有效的方法.但是,我认为这是虚假的:浮点数不是整数(因为它有一个非整数组件),所以试图将它们的"类型"等同起来并没有多大意义.你可以合法地 Float 转换为整数(通过截断),但我可以说我也可以我的状态转换为整数(通过"截断"所有非退出代码信息). …

ruby duck-typing

5
推荐指数
2
解决办法
577
查看次数

pthreads 是否支持查询递归互斥锁的“锁计数”的方法?

pthreads 是否支持任何允许您查询递归互斥锁被锁定次数的方法?

mutex pthreads recursive-mutex

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

maven站点插件不在多模块项目中部署子项目或生成index.html

我有一个多模块项目,我想部署一个站点,但似乎我的站点部署配置不是由子项目子模块继承.

    • moduleA
    • moduleB

在文件系统上,它们相对于彼此定位:

/parent/
/moduleA/
/moduleB/
Run Code Online (Sandbox Code Playgroud)

当我跑:

mvn site-deploy -P documentation
Run Code Online (Sandbox Code Playgroud)

我的父项目已正确部署到:

  • SCP:// devServer /文档/ webwars /

但是没有像moduleA或moduleB这样的子项目在那里部署,因为我期望子模块继承父分发管理:

  • SCP:// devServer /文档/ webwars/moduleA
  • SCP:// devServer /文档/ webwars/moduleB

这是我的父pom.xml,我删除了一些无关的细节和报告插件(我包含了我的javadoc插件,它使用API​​Viz有点时髦,并且聚合以确保聚合父javadoc和子javadoc正确使用API​​Viz.):

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
                      http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.webwars</groupId>
    <artifactId> parent</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>parent</name>
    <distributionManagement>
        <site>
            <id>webwarsDev.website</id>
            <url>scp://devServer/documentation/webwars/</url>
        </site>         
    </distributionManagement>
    <modules>
        <module>../moduleA</module>
        <module>../moduleB</module>
    </modules>
    <profiles>
        <profile>
            <id>documentation</id>
            <build>
                <pluginManagement>
                    <plugins>
                        <plugin>
                            <groupId>org.apache.maven.plugins</groupId>
                            <artifactId>maven-pmd-plugin</artifactId>
                            <executions>
                                <execution>
                                    <id>verify_pmd</id>
                                    <phase>verify</phase>
                                    <goals>
                                        <goal>pmd</goal>
                                    </goals>
                                    <configuration>
                                        <linkXref>true</linkXref>
                                        <minimumTokens>20</minimumTokens>
                                        <targetJdk>1.6</targetJdk>
                                    </configuration>
                                </execution>
                            </executions>
                        </plugin>                        

                    </plugins>
                </pluginManagement>
            </build>
            <reporting>
                <plugins> …
Run Code Online (Sandbox Code Playgroud)

maven-2 javadoc documentation-generation maven-plugin maven-site-plugin

6
推荐指数
1
解决办法
2833
查看次数

接口中的toString(),equals()和hashCode()

所以,我有一个需要实现的一堆方法的接口,方法名称是无关紧要的.

实现此接口的对象通常被放入集合中,并且还具有我希望它们使用的特殊toString()格式.

所以,我认为将hashCode(),equals()和toString()放入接口会很方便,以确保我记得覆盖这些的默认方法.但是当我将这些方法添加到接口时,如果我没有实现这三个方法,IDE/Compiler就不会抱怨,即使我明确地将它们放在接口中.

为什么不对我强制执行?它抱怨如果我没有实现任何其他方法,但它没有强制执行这三个方法.是什么赋予了?有线索吗?

java interface equals tostring hashcode

52
推荐指数
6
解决办法
4万
查看次数

在MySQL中按引擎显示表

如何使用给定的引擎显示MySQL中的所有表,例如InnoDB,MyISAM,FEDERATED?

mysql storage-engines

79
推荐指数
3
解决办法
6万
查看次数

我的shell脚本如何控制zenity窗口的位置?

zenity当我的垃圾邮件过滤器守护程序过滤一组邮件时,我正在发布一个简单的通知.目前此消息已发布到屏幕中间,这是突兀的.我想将它发布到左上角.但是,zenity不尊重-geometry应该是所有X应用程序的标准选项,并且其文档提供了控制窗口高度和宽度的选项,但不提供放置.

有没有办法控制zenity窗口张贴的(x,y)坐标?

如果没有,有没有办法通过修改X资源或窗口管理器来解决这个问题(我正在使用fvwm)?


编辑:以下内容不起作用~/.fvwm2rc(fvwm版本2.5.26):

Style "Information" PositionPlacement -0 -0
Style "Zenity" PositionPlacement -0 -0
Run Code Online (Sandbox Code Playgroud)

它们也不适用于-0 -0删除,如手册页中所示.(窗口标题为zenity --info"信息".)

有趣的是,zenity忽略了我之前的窗口管理器指令,默认情况下应手动放置窗口.


编辑:

在许多其他有趣的信息中,xprop(1)有关zenity窗口的报告:

_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DIALOG
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                program specified location: 0, 0
                program specified minimum size: 307 by 128
                program specified maximum size: 307 by 128
                window gravity: NorthWest
WM_CLASS(STRING) = "zenity", "Zenity"
WM_ICON_NAME(STRING) = "Information"
WM_NAME(STRING) = …
Run Code Online (Sandbox Code Playgroud)

x11 shell zenity

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

如何为Mac OS X 10.5编译

我想编译10.5版本的应用程序并转发.自从我升级到Snow Leopard并安装了最新的XCode后,gcc默认为10.6.我已经尝试了-isysroot /Developer/SDKs/MacOSX10.5.sdk,但这似乎不起作用.是否有允许我设置SDK的GCC标志?

(顺便说一句,我改变了gcc符号链接指向gcc-4.0而不是gcc-4.2并且它工作但我认为我可以告诉最新的GCC编译旧的SDK).

谢谢,芮

macos xcode gcc

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