问题列表 - 第7384页

Java插件模式

我是Java初学者,如果有人在这里可以解释如何在Java中实现Martin Fowler的插件模式,我将不胜感激.

提前致谢.

java plugin-pattern

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

获取EAR中JAR内文件的绝对路径?

我有一个部署为EAR文件的J2EE应用程序,该文件又包含业务层代码(包括一些EJB)的JAR文件和Web层代码的WAR文件.EAR文件部署到JBoss 3.2.5,它解压缩EAR和WAR文件,但不解压缩JAR文件(这不是问题,只是FYI).

JAR文件中的一个文件是MS Word模板,其绝对路径需要传递给某些本机MS Word代码(使用Jacob,FWIW).

问题是,如果我尝试获取这样的文件(从JAR文件中的一些代码中):

URL url = getClass().getResource("myTemplate.dot");
File file = new File(url.toURI()); // <= fails!
String absolutePath = file.getAbsolutePath();
// Pass the absolutePath to MS Word to be opened as a document
Run Code Online (Sandbox Code Playgroud)

...然后java.io.File构造函数抛出IllegalArgumentException"URI不是分层的".URL和URI都具有相同的toString()输出,即:

jar:file:/G:/jboss/myapp/jboss/server/default/tmp/deploy/tmp29269myapp.ear-contents/myapp.jar!/my/package/myTemplate.dot
Run Code Online (Sandbox Code Playgroud)

这条路径的大部分在文件系统上是有效的,但其余路径不是(在JAR文件的内部):

G:/jboss/myapp/jboss/server/default/tmp/deploy/tmp29269myapp.ear-contents
Run Code Online (Sandbox Code Playgroud)

获取此文件的绝对路径最简单的方法是什么?

java jar file path java-ee

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

高效的PHP自动加载和命名策略

像大多数Web开发人员一样,我非常享受固态MVC架构对Web应用程序和站点的好处.使用PHP进行MVC时,自动加载显然非常方便.

我已成为spl_autoload_register过度简单定义单个__autoload()函数的粉丝,因为如果要合并每个使用自己的自动加载的不同基本模块,这显然会更灵活.但是,我从来没有对我写的加载函数感到满意.它们涉及大量字符串检查和目录扫描,以便查找可能加载的类.

举例来说,假设我有一个具有被定义为基本路径的应用程序PATH_APP和一个简单的结构,命名的目录models,viewscontrollers.我经常使用命名结构来命名文件IndexView.phpIndexController.php在相应的目录中,默认情况下模型通常没有特定的方案.我可能有一个这样的结构的加载器函数,注册时spl_autoload_register:

public function MVCLoader($class)
{
    if (file_exists(PATH_APP.'/models/'.$class.'.php')) {
        require_once(PATH_APP.'/models/'.$class.'.php');
        return true;
    }
    else if (strpos($class,'View') !== false) {
        if (file_exists(PATH_APP.'/views/'.$class.'.php')) {
            require_once(PATH_APP.'/views/'.$class.'.php');
            return true;
        }
    }
    else if (strpos($class,'Controller') !== false) {
        if (file_exists(PATH_APP.'/controllers/'.$class.'.php')) {
            require_once(PATH_APP.'/controllers/'.$class.'.php');
            return true;
        }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

如果之后没有找到它,我可能有另一个函数来扫描models目录中的子目录.但是,所有if/else-ing,字符串检查和目录扫描对我来说似乎效率低下,我想改进它.

我很好奇其他开发人员可能采用的文件命名和自动加载策略.我正在寻找专门用于高效自动加载的良好技术,而不是自动加载的替代方案.

php naming-conventions spl-autoload-register

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

如何为诺基亚等手机的Symbian OS开发应用程序

我想为Symbian OS手机开发应用程序,并尝试使用Java编程以外的其他轨道.我想体验如何使用C和C++在手机上编程.

您能否提供一些关于开发此类应用程序的工具的提示.我正在瞄准诺基亚手机..

mobile-phones symbian nokia

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

无法使用Launchctl启动subversion

我正在尝试使用Launchctl来启动svnserve进程,但我一直收到一条错误消息"没有返回plist:/Library/LaunchAgents/org.tigris.subversion.svnserve.plist".这是svnserve是/ opt/local/bin/svnserve的地方,这是plist文件任何想法这里可能有什么问题?

<dict>
  <key>Disabled</key>
  <false/>
  <key>Label</key>
  <string>org.tigris.subversion.svnserve</string>
  <key>ProgramArguments</key>
  <array>
      <string>/opt/local/bin/svnserve</string>
      <string>--inetd</string>
      <string>--root=/Users/Sunit/Repositories</string>
  </array>
  <key>ServiceDescription</key>
  <string>SVN Version Control System/string>
  <key>Sockets</key>
  <dict>
    <key>Listeners</key>
    <array>
      <dict>
        <key>SockFamily</key>
        <string>IPv4</string>
        <key>SockServiceName</key>
        <string>svn</string>
        <key>SockType</key>
        <string>stream</string>
      </dict>
      <dict>
        <key>SockFamily</key>
        <string>IPv6</string>
        <key>SockServiceName</key>
        <string>svn</string>
        <key>SockType</key>
        <string>stream</string>
      </dict>
    </array>
  </dict>
Run Code Online (Sandbox Code Playgroud)

svn macos launchd

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

德米特对工厂模式和依赖注入的规律

我有一个关于依赖注入的问题.

说我想创建一个类调用它,WebGetTask

WebGetTask需要依赖HttpService

坏代码1代码:

private HttpService  httpService;
...   
List<WebGetTask> list = new ArrayList<WebGetTask>();   
for(...)   
{   
   list.add(new WebGetTask(httpService)); 
}
...
Run Code Online (Sandbox Code Playgroud)

好.我知道这很糟糕,因为注入了httpService,但它从未使用过,除了在新的WebGetTask上创建

好坏代码2代码:

private WebGetTaskFactory webGetTaskFactory;
...  
List<WebGetTask> list = new ArrayList<WebGetTask>();  
for(...)  
{   
    list.add(webGetTaskFactory.newTask());  
}  
...
Run Code Online (Sandbox Code Playgroud)

我认为这更好,因为我们使用工厂但......

从我所在的位置,我可以看到在WebGetTaskFactory中我们仍然注入一个HttpService并且没有对它做任何事情,除了创建一个新的WebGetTask的唯一目的

所以回顾一下我的问题是如何设计一个工厂类(WebGetTaskFactory),当新对象在其构造函数上需要依赖项(HttpService)而不是简单地注入和传递依赖项(HttpService)时,它会创建新对象(WebGetTask)?或者更确切地说,这是这样做的方式吗?如果是这样,那么一切都很好,如果不是,那么请指导我如何正确使用DI和工厂模式.谢谢.

dependency-injection law-of-demeter

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

在现代C++应用程序中使用Win32代码时,是否应该使用正确的转换?

例如,可以在整个MSDN文档中找到以下演员:

(LPTSTR)&lpMsgBuf
Run Code Online (Sandbox Code Playgroud)

我应该把它转换成:

static_cast<LPTSTR>(&lpMsgBuf);
Run Code Online (Sandbox Code Playgroud)

或者我应该留下所有惯用的C-esque Win32部分,因为它们通常在文档中找到,并为我的其余代码保存更惯用的C++样式/用法?

c++ winapi visual-c++

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

使用Git下载特定标签

我试图找出如何下载Git存储库的特定标记 - 它是当前版本背后的一个版本.

我在git网页上看到了以前版本的标签,对象名称为长十六进制数.

Tagged release 1.1.5根据网站版本名称是" ".

我尝试了这样的命令(名称已更改):

git clone http://git.abc.net/git/abc.git my_abc
Run Code Online (Sandbox Code Playgroud)

我确实得到了一些东西 - 一个目录,一堆子目录等.

如果它是整个存储库,我如何获得我正在寻找的版本?如果没有,我该如何下载该特定版本?

git git-clone git-tag

1892
推荐指数
13
解决办法
133万
查看次数

确定字符串是否是C中的有效IPv4地址

确定字符串是否包含IPv4地址的好方法是什么?我应该用isdigit()吗?

c string

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

使用Tcl/Tk对桌面应用进行原型设计的优缺点

我已经开始使用Tcl对桌面应用进行原型设计,并打算将这个想法提交给一些风险资本家.桌面应用程序和Tcl都不流行,所以我想准备好反对对这项技术的任何反对意见.以下是我看到他们的专业人士,我期待充实利益,我很有信心,但希望还有更多的优点.

  1. 我最初开始在使用Java的合同中按照同样的方式编写一些代码,并且出于法律原因希望使用完全不同的语言来区分我的努力
  2. 虽然目前的代码作为命令行脚本运行,但是有必要应用一个UI,Tk就足以满足原型,而Tk与Tcl紧密集成.
  3. 由于我总体上远离Java,我预见到"生产",而不是原型,UI是用C++编写的.Tcl很容易嵌入到C++应用程序中,因此在将性能关键部分移植到C++之前,最初可以嵌入底层TCL引擎

我理解潜在的骗局是"Tk UI很难看",但如上所述,Tk UI将用于原型,而且无论如何,Tk是一个丑陋的问题,已经由你真正提出过了:为什么要考虑Tk GUI丑陋?

user-interface desktop prototype tk-toolkit tcl

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