问题列表 - 第23579页

Java:将外部恐怖代码转换为干净API的最佳实践......?

我有一个项目(与图算法有关).它是由其他人写的.

代码太可怕了:

  • 公共领域,没有getter/setters
  • 所有公开的巨大方法
  • 有些班级有20多个领域
  • 一些类有超过5个构造函数(也很大)
  • 其中一些构造函数只留下许多字段null
    (所以我不能使一些字段最终,因为那时每个第二个构造函数都会发出错误信号)
  • 方法和类在两个方向上相互依赖

我必须将其重写为一个干净且易于理解的API.

问题是:我自己对此代码中的任何内容都不了解.

请给我一些分析和理解这些代码的提示.

我想,或许,有些工具可以执行静态代码分析并给我调用图表和类似的东西.

java api refactoring readability

4
推荐指数
2
解决办法
1058
查看次数

LaTeX:文档标题中未编号的部分

我有一个文档,我想在我的标题中放置一个未编号的部分.我使用fancyhdr包,对于编号的部分,我会做这样的事情:

\lhead{\leftmark}
Run Code Online (Sandbox Code Playgroud)

但这不适用于未编号的部分.我在我的文档中解决数学问题,所以我不想要部分和编号部分

谁知道,这是怎么做到的?

layout latex

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

GVim主题斜体切断了角色

替代文字http://i40.tinypic.com/f2rcsy.gif

斜体会导致最后一个字符被切断,使其难以看清.

这是否可以修复而不从主题中删除斜体样式?

在Windows上使用带有wombat主题的GVim .

编辑:谢谢kemp,这确实是一个字体错误.

vim themes

13
推荐指数
1
解决办法
1867
查看次数

在Java中使用动态编译的原因

我看到有些人正在编写java文件,然后调用编译器,这是否会在运行时模式下产生开销?

java

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

是否可以将一个VML圆形嵌套在另一个中?

例如:

<v:roundrect style="display:block;width:100px;height:100px;" fillcolor="#eee">
Hi
    <v:roundrect style="display:block;width:50px;height:50px;" fillcolor="#c00">
        Hey
    </v:roundrect>
</v:roundrect>
Run Code Online (Sandbox Code Playgroud)

当我使用这个标记时,我看不到内圆的背景.

有任何想法吗?

vml nested

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

用于在shell脚本中返回多个值的习惯用法

是否有任何习惯用于从脚本中的bash函数返回多个值?

http://tldp.org/LDP/abs/html/assortedtips.html描述了如何回显多个值并处理结果(例如,示例35-17),但如果某些返回值是带空格的字符串,则会变得棘手在.

一种更有条理的返回方式是分配给全局变量,比如

foo () {
    FOO_RV1="bob"
    FOO_RV2="bill"
}

foo
echo "foo returned ${FOO_RV1} and ${FOO_RV2}"
Run Code Online (Sandbox Code Playgroud)

我意识到,如果我需要在shell脚本中重新入门,我可能做错了,但我仍然感到非常不舒服地抛出全局变量只是为了保持返回值.

有没有更好的办法?我更喜欢可移植性,但如果必须指定的话,它可能不是真正的限制#!/bin/bash.

shell idioms

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

每页多个有状态iframe将覆盖JSESSIONID?

寻找某人确认或反驳我的理论,即在同一域上部署指向两个不同有状态页面的两个iframe可能导致JSESSIONID被覆盖.这就是我的意思:

建立

  1. 假设您有两个页面需要HttpSession状态(会话亲和性)才能正常运行 - 部署在http://www.foo.com/ page1http://www.foo.com/ page2
  2. 假设www.foo.com是运行Tomcat(6.0.20,fwiw)的单个主机,它使用JSESSIONID作为会话ID.
  3. 假设这些页面被转换为嵌入第三方网站的两个iframe小部件:http://www.site.com/page1"/>(和/ page2分别)
  4. 假设有第三方网站希望将两个小部件放在http:// www.bar.com /foowidgets.html

可能出现以下竞争条件吗?

  1. 一位新访问者访问http://www.bar.com/foowidgets.html
  2. 浏览器开始在foowidgets.html中加载网址,包括两个iframe的'src'网址
  3. 因为浏览器针对同一主机打开了多个并发连接(在chrome/ff情况下高达6个),浏览器碰巧同时发出了对http://www.foo.com/page1http://www.foo.com的请求/第2页
  4. tomcat @ foo.com几乎同时收到两个请求,第一次调用getSession()(在两个不同的线程上)并懒惰地创建两个HttpSession,因此创建两个JSESSIONID,值为$ Page1和$ Page2.请求还将数据填充到各个会话中(将需要数据来处理后续请求)
  5. 假设浏览器首先收到对page1请求的响应.浏览器为HOST www.foo.com设置cookie JSESSIONID = $ Page1
  6. 接收到对page2请求的下一个响应,并且浏览器 使用$ Page2 覆盖 HOST www.foo.com的cookie JSESSIONID
  7. 用户点击foowidgets.html上'page1'iframe中的内容; 浏览器向http://www.foo.com/page1?action=doSomethingStateful发出第二个请求 .该请求带有JSESSIONID = $ Page2(而不是$ Page1 - 因为cookie值被覆盖)
  8. 当foo.com收到此请求时,它会查找错误的HttpSession实例(因为JSESSIONID键是$ Page2而不是$ Page1).Foobar的!

以上可以发生吗?我是这么认为的,但我希望得到确认.

如果以上显然是可行的,那么我们想要支持每页多个iframe的解决方案是什么?我们并不需要iframe共享相同的HttpSession,尽管这样会很好.如果解决方案仍然会为每个iframe规定一个单独的HttpSession,那么当然 - iframe 1最终不会引用iframe 2的httpSession状态而不是iframe.

我能想到的是:

  1. 将page1和page2映射到不同的域(操作开销)
  2. 使用URL重写而不是cookie(搞乱分析)
  3. 还要别的吗?

非常感谢,-nikita

cookies tomcat url-rewriting jsessionid

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

使用javascript将HTML附加到正文的末尾

我有几个面板箱(灯箱)模板,我需要在应用程序的不同点.它们存储在不同的部分和文件中.

我将根据我需要的函数初始化不同的javascript函数.问题是,使用javascript将外部HTML页面附加到我的身体的最佳方法是什么?

javascript jquery ruby-on-rails

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

在Win7中刷新Windows资源管理器

我的计划设定"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"价值"Hidden".Hovewer我无法刷新资源管理器以考虑此更改.我试过了:

1)

    SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);` 
Run Code Online (Sandbox Code Playgroud)

2)

    SHELLSTATE state = new SHELLSTATE(); 
    state.fShowAllObjects = (uint)1; 
    SHGetSetSettings(ref state, SSF.SSF_SHOWALLOBJECTS, true); 
Run Code Online (Sandbox Code Playgroud)

3)

    SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 5000, ref dwResult); 
Run Code Online (Sandbox Code Playgroud)

4)

    SendMessage(HWND_BROADCAST, WM_COMMAND, 28931 /* Refresh */, 0); 
Run Code Online (Sandbox Code Playgroud)

什么都行不通.所以我该怎么做?如果我用F5自己刷新资源管理器,那么它可行.Hovewer我想要一些优雅的解决方案,所以它会在任何地方刷新显示,甚至在OpenFile/ SaveFile对话框中,这些都是当前打开的.

我正在使用C#.NET,Win7.

状态更新#1

正如所Anders指出的,有一种使用COM刷新资源管理器窗口的简单方法:

Guid CLSID_ShellApplication = new Guid("13709620-C279-11CE-A49E-444553540000");
Type shellApplicationType = Type.GetTypeFromCLSID(CLSID_ShellApplication, true);
dynamic shellApplication = Activator.CreateInstance(shellApplicationType);
dynamic windows = shellApplication.Windows();
for (int i = 0; i < windows.Count; i++)
    windows.Item(i).Refresh();
Run Code Online (Sandbox Code Playgroud)

所以这一部分已经完成.Hovewer我仍然需要刷新 …

.net c# windows windows-explorer windows-7

16
推荐指数
1
解决办法
7464
查看次数

pyopengl:它可以取代c ++吗?

我正在开始一个计算机图形学课程,我必须选择一种语言.

选择在C++和Python之间.我对C++没有任何问题,python是一项正在进行中的工作.所以我想沿着python路走下去,使用pyopengl作为图形部分.

我听说,表演是一个问题.

python/pyopengl是否足够成熟以在性能上挑战C++?

我意识到这是一个很长的镜头,但我想听听你的想法,使用pyopengl的经验.

提前致谢.

python 3d graphics pyopengl

14
推荐指数
3
解决办法
8464
查看次数