小编Vil*_*nen的帖子

Python中最短的数独求解器 - 它是如何工作的?

我正在玩我自己的数独求解器,当我遇到这个时,我正在寻找一些指向良好和快速设计的指针:

def r(a):i=a.find('0');~i or exit(a);[m
in[(i-j)%9*(i/9^j/9)*(i/27^j/27|i%9/3^j%9/3)or a[j]for
j in range(81)]or r(a[:i]+m+a[i+1:])for m in'%d'%5**18]
from sys import*;r(argv[1])
Run Code Online (Sandbox Code Playgroud)

我自己的实现解决了Sudokus,就像我在头脑中解决它一样,但这个神秘的算法是如何工作的?

http://scottkirkwood.blogspot.com/2006/07/shortest-sudoku-solver-in-python.html

python algorithm

78
推荐指数
4
解决办法
8万
查看次数

如何禁用.NET Framework异常处理并使用我自己的异常处理?

我已经开发了.NET 4软件,我已准备好将其发送给测试版用户.如果在软件中抛出未处理的异常,我想抓住它,记录它并将日志发送给我.我已经实现了这个功能,当我在Visual Studio的调试模式下运行时,它似乎运行正常.但是,当我构建软件的发行版并安装它时,Microsoft .NET Framework开始在我的代码之前捕获异常.我收到一个错误消息的弹出窗口:"应用程序中的组件中发生了未处理的异常.如果单击继续,应用程序将忽略此错误并尝试继续."

为了测试崩溃,我创建了一个崩溃按钮,它会抛出异常.此崩溃记录自身,异常处理程序记录所有收到的未处理异常.当我查看发布版本的日志时,我只能看到崩溃时的日志消息,而不是异常处理程序中的日志消息.

我用这段代码附加了自己的异常处理程序:

AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
Run Code Online (Sandbox Code Playgroud)

有没有办法禁用.NET Framework的异常捕获,还是有更好的方法来附加我自己的异常处理程序?

更新:我正在使用WPF.我将查看DispatcherUnhandledException并告诉您它是否解决了问题.

更新#2:不幸的是,向Application.Current.DispatcherUnhandledException添加处理程序并没有解决问题.显然,这个调试弹出窗口是由Visual Studio附带的JIT(实时)调试器创建的.我将不得不用"民用"Windows测试软件,看看是否也有例外.

更新#3:由于某种原因,使用Visual Studio构建的版本可以使用,但是使用MSBuild脚本和Dotfuscator构建的版本不能.

.net c# windows exception

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

Knockout和jQuery Mobile:将数据绑定到选择列表

我在同一个项目中使用了Knockout(版本2.0)和jQuery Mobile(版本1.0.1).问题在于将数据绑定到选择列表.jQuery Mobile以一种看似选择的值和实际列表是单独元素的方式呈现选择列表.这是通过执行来解决的

$(element).selectmenu('refresh', true);
Run Code Online (Sandbox Code Playgroud)

更改列表或选定值后.根据我的经验,这是一个危险的情况,因为开发人员经常忘记刷新选择列表.

为了简化这一点,我编写了自己的Knockout绑定处理程序.使用以下代码将值绑定到选择列表:

<select name="selection" data-bind="jqmOptions: values, optionsValue: 'id', optionsText: 'name', value: selectedValue">
</select>
Run Code Online (Sandbox Code Playgroud)

jqmOptions的实现:

ko.bindingHandlers.jqmOptions = {
    init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        if (typeof ko.bindingHandlers.options.init !== 'undefined') {
            ko.bindingHandlers.options.init(element, valueAccessor, allBindingsAccessor, viewModel);
        }
    },

    update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
        if (typeof ko.bindingHandlers.options.update !== 'undefined') {
            ko.bindingHandlers.options.update(element, valueAccessor, allBindingsAccessor, viewModel);
        }

        var instance = $.data(element, 'selectmenu');
        if (instance) {
            $(element).selectmenu('refresh', true);
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

这使用本机options绑定,但除此之外,它会在更改列表值后自动刷新选择列表.但是当我更改所选值时,这有问题.如果我首先设置列表值,我的jqmOptions将刷新选择列表,但此时,尚未设置所选值.我最终得到一个选择列表,它具有所有正确的值,并在内部选择了正确的选项,但jQuery Mobile仍然显示默认值为selected.

this.values(someArrayOfValues);
this.selectedValue(oneOfTheArrayValues);
Run Code Online (Sandbox Code Playgroud)

Knockout不允许我首先设置所选值然后设置列表值,因为在这种情况下,当我设置所选值时没有允许的值.因此,所选值始终未定义.

有没有办法编写Knockout自定义绑定,在两种情况下都会刷新选择列表元素:更改列表值和更改选定值时? …

jquery-mobile knockout.js

9
推荐指数
2
解决办法
7694
查看次数

Eclipse和Tomcat:如何指定项目中提供的文件夹?

我正在使用Eclipse 3.4和Tomcat 5.5,并且我已经设置了动态Web项目.我可以从http://127.0.0.1:8080/project/访问它,但默认情况下它提供WebContent文件夹中的文件.我想要提供的真实文件可以在名为"share"的文件夹下找到.这个文件夹来自CVS,所以我想用它给定的名字而不是重命名它.如何才能做到这一点?

java eclipse tomcat eclipse-3.4

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

Eclipse和JSP:java.lang.NoSuchMethodError:javax.servlet.jsp.tagext.TagAttributeInfo.<init>(Ljava/lang/String; ZLjava/lang/String; ZZ)V

我正在使用Eclipse 3.4和WTP 3.0.2并运行一个相当大的动态Web项目.我已经设置了项目,以便我可以在http://127.0.0.1:8080/share/访问它,但每当我这样做时,我都会收到以下错误:

  java.lang.NoSuchMethodError: javax.servlet.jsp.tagext.TagAttributeInfo.(Ljava/lang/String;ZLjava/lang/String;ZZ)V
  at org.apache.jasper.compiler.TagLibraryInfoImpl.createAttribute(TagLibraryInfoImpl.java:572)
  at org.apache.jasper.compiler.TagLibraryInfoImpl.createTagInfo(TagLibraryInfoImpl.java:401)
  at org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:248)
  at org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:162)
  at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:423)
  at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492)
  at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1552)
  at org.apache.jasper.compiler.Parser.parse(Parser.java:126)
  at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:211)
  at org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
  at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:155)
  at org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
  at org.apache.jasper.compiler.Compiler.compile(Compiler.java:276)
  at org.apache.jasper.compiler.Compiler.compile(Compiler.java:264)
  at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563)
  at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:303)
  at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
  at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
  at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
  at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
  at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
  at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
  at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
  at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
  at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
  at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
  at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
  at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
  at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
  at java.lang.Thread.run(Unknown Source)

因为上述文件都不是我自己的,所以指出问题的原因是非常困难的.任何想法从哪里开始寻找?

eclipse jsp eclipse-3.4

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

如何在jQuery Mobile中处理页面更改错误

我正在编写一个需要用户身份验证的jQuery Mobile应用程序.同一个用户无法从多个位置打开她的会话:如果用户从另一个浏览器登录,则前一个会话被标记为已死.

如果用户尝试使用具有死会话的浏览器移动到另一页面,则会显示"错误加载页面"消息.这很糟糕,因为用户可能不知道她为什么会收到此错误.是否可以点击错误事件,以便我可以检查会话的状态,并在会话耗尽时将用户重定向到登录页面?

jquery-mobile

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

从命令行增加Delphi XE项目版本号

我有一个Delphi XE项目,我正在尝试在使用MSBuild构建它之前更改程序的版本号.版本号信息位于DPROJ文件中,但如果我更改这些值,则版本号不会更改.我认为这样做的原因是当您在IDE中更改版本号时,Delphi会将更改保存到DPROJ和RES文件中.

有没有办法从命令行编译RES文件与DPROJ文件中的更改?我发现这个问题,这表明节省的INC文件的版本号和包括的项目,但这种感觉更复杂一点的解决方案相比,只是在DPROJ进行更改.

delphi msbuild delphi-xe

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

MD5在Java中使用ISO-8859-1字符串哈希

我正在实施名为Suomen Verkkomaksut的数字支付服务界面.有关付款的信息将通过HTML表单发送给他们.为了确保在传输过程中没有人混淆信息,MD5哈希在两端都会计算出一个没有发送给他们的特殊密钥.

我的问题是,由于某种原因,他们似乎决定传入的数据是用ISO-8859-1而不是UTF-8编码的.我发送给它们的哈希是用UTF-8字符串计算的,因此它与它们计算的哈希值不同.

我尝试使用以下代码:

String prehash = "6pKF4jkv97zmqBJ3ZL8gUw5DfT2NMQ|13466|123456||Testitilaus|EUR|http://www.esimerkki.fi/success|http://www.esimerkki.fi/cancel|http://www.esimerkki.fi/notify|5.1|fi_FI|0412345678|0412345678|esimerkki@esimerkki.fi|Matti|Meikäläinen||Testikatu 1|40500|Jyväskylä|FI|1|2|Tuote #101|101|1|10.00|22.00|0|1|Tuote #202|202|2|8.50|22.00|0|1";
String prehashIso = new String(prehash.getBytes("ISO-8859-1"), "ISO-8859-1");

String hash = Crypt.md5sum(prehash).toUpperCase(); 
String hashIso = Crypt.md5sum(prehashIso).toUpperCase();
Run Code Online (Sandbox Code Playgroud)

不幸的是,两个散列都与值C83CF67455AF10913D54252737F30E21相同.根据Suomen Verkkomaksut的文档,此示例案例的正确值为975816A41B9EB79B18B3B4526569640E.

有没有办法用ISO-8859-1字符串计算Java中的MD5哈希?

更新:在等待Suomen Verkkomaksut的回答时,我发现了另一种制作哈希的方法.Michael Borgwardt纠正了我对字符串和编码的理解,并且我找到了一种从byte []创建哈希的方法.

Apache Commons是一个很好的库源,我发现它们的DigestUtils类有一个md5hex函数,它接受byte []输入并返回一个32字符的十六进制字符串.

由于某种原因,这仍然无效.这两个都返回相同的值:

DigestUtils.md5Hex(prehash.getBytes());
DigestUtils.md5Hex(prehash.getBytes("ISO-8859-1"));
Run Code Online (Sandbox Code Playgroud)

java md5 utf-8 iso-8859-1

3
推荐指数
1
解决办法
3667
查看次数

同步缩放两个TChart组件

我正在使用两个TChart组件,并希望为它们进行同步缩放.我发现TChart有ZoomRect程序用于放大图表上的所需矩形,但我没有找到任何方法从另一个图表中读取此缩放矩形的坐标.

这里有一些伪代码可以进一步说明:

MainChart.OnZoom := HandleZooming;

...

procedure HandleZooming(Sender: TObject);
var
  zoomRectangle: TRect;
begin
  zoomRectangle := MainChart.?????;
  SecondaryChart.ZoomRect(zoomRectangle);
end;
Run Code Online (Sandbox Code Playgroud)

我正在使用Delphi XE.

delphi teechart delphi-xe

3
推荐指数
1
解决办法
1475
查看次数

使用图像制作按钮的最简单方法

我正在使用Delphi XE,我想制作一个按钮,只显示提供的PNG图像,透明背景,没有任何额外的边距.

我尝试用TButton做这个,但是我得到了一个带有bsPushButton风格的丑陋灰色背景.如果我使用bsCommandLink样式,则有一个10像素的上边距,尽管我的所有ImageMargins设置都设置为0.

实现这一目标的最简单方法是什么?

编辑:它不必看起来像一个按钮.我只需要它看起来与它所分配的图像完全一样.优选地,它应该能够是制表位并具有各种状态(启用,禁用,悬停......),因此我可以为每个状态分配适当的图像.

delphi vcl delphi-xe

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

带TImageList的透明PNG图像

我正在使用Delphi XE.

我在表单上添加了一个TAdvGlowButton,并添加了一个带有一个透明PNG图像的TImageList作为图像源.当我在设计模式下查看表单时,按钮看起来完全正确,图像是透明的.但是,当我运行程序时,图像的背景变为纯黑色.如果我不正确,这不是TAdvGlowButton的错误,而是TImageList.

有没有办法解决这个问题,而不使用任何第三方组件?

delphi

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