小编rao*_*son的帖子

Aperture插件与EXC_BAD_ACCESS崩溃

我尝试运行Aperture SDK 2.1附带的SampleFTPExportPlugIn.我不得不调整基本SDK设置和手动PluginManager.Framework文件夹复制到/库/框架,描述在这里.

所有编译和Aperture 3.2.3现在提供菜单项File/Export/FTP.

选择"FTP"导出方法并因此触发插件代码时,Aperture会发生EXC_BAD_ACCESS崩溃.当尝试获取对以下内容的引用时,非法内存访问在initWithAPIManager类的方法中发生:SampleFTPExportPlugInApertureExportManager

   _exportManager = [[_apiManager apiForProtocol:@protocol(ApertureExportManager)] retain];
Run Code Online (Sandbox Code Playgroud)

这是在Aperture将控制交给插件后执行的第二行,似乎是ApertureExportManager在任何Aperture插件中获取引用的标准方法(我还没有找到任何替代方法来实现相同的功能)任何地方).

这里的堆栈跟踪:

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: 0x000000000000000d, 0x0000000000000000

VM Regions Near 0:
--> 
    __TEXT                 0000000100000000-0000000100798000 [ 7776K] r-x/rwx SM=COW  /Applications/Aperture.app/Contents/MacOS/Aperture

Application Specific Information:
objc_msgSend() selector name: class
objc[3000]: garbage collection is OFF
Performing @selector(a_exportPlugIn:) from sender NSMenuItem 0x111d2a540

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libobjc.A.dylib                 0x00007fff8711c090 objc_msgSend_vtable2 + 16
1   com.apple.CoreFoundation        0x00007fff8381e25f …
Run Code Online (Sandbox Code Playgroud)

xcode plugins objective-c

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

从EnitityManager获取所有映射的实体

我有一段维护代码,应该在特定时间点为某个用户授予选择权限:

grant select on A_DB.A_TABLE to READ_ONLY_USER;
Run Code Online (Sandbox Code Playgroud)

我想为所有表格做这个.我可以select * from tab在Oracle或show tablesMySQL中使用它来获取完整列表然后继续前进.

但是因为我已经掌握了javax.persistence.EntityManagerObject,所以我想知道是否有另一种方法来获取所有映射的实体,Manager知道(我正在使用Hibernate).

java database data-binding persistence hibernate

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

PNG是用于存储图片的经济上最合理的文件格式吗?

我正在寻找经济合理的解决方案来长时间存储图片.我读到了与JPEG相比具有优越特性的PNG文件格式,即在以下类别中:

  • 没有专利,没有许可证,没有版权
  • 没有质量损失
  • 但压缩了

我有许多来自PhotoShop的大型ESP,其中包含大量元数据,例如我不需要存储的图层和颜色配置文件(这些对于设计师来说非常方便,当他使用它时).我想将没有隐藏数据的这些图像转换为新的目标文件格式.

我的问题的另一个侧面条件是目标文件格式必须在浏览器中显示.所以我想我的选择无论如何都是有限的:GIF,JPEG,PNG.

我错过了什么或者PNG最适合我的情况吗?

png jpeg file-format image

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

CouchDB和Amazon S3的通用接口

我刚刚阅读了亚马逊S3和CouchDB上的大量资料.也许还不够,所以这是我的问题:

这两个系统对我来说都很有吸引力.使用Apache License V2和Amazon S3分发CouchDB,您需要按照存储的兆字节数和您生成的流量付费.所以货币有点不同.

但从技术角度来看,根据我的理解,两个系统都可以帮助您存储任意大小的非结构化数据(取决于我从CouchDB中理解的底层操作系统).

我不知道为它们提供统一的界面是多么容易,所以你可以根据需要改变你的"数据存储提供商"?无需更改任何代码.

我也不知道这在技术上是否容易实现,还没有详细研究它们的协议.但是,尽可能延迟提供者的决定是很好的.

此外,对于集成测试目的而言,这可能很有趣:例如,您可以针对本地CouchDB实例进行测试,并针对S3运行代码以供生产使用.

从不同角度阐述我的问题:亚马逊的S3和CouchDB基本上解决了完全相同的问题,还是这种疯狂,我错过了重点?

更新的问题

在Jim的精彩回答之后,让我再将问题重新解释为:

"CouchDB和Amazon SimpleDB的通用接口"

按照相同的思路,您是否看到CouchDB和SimpleDB之间的通用接口存在问题?

database cloud couchdb interface amazon-s3

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

在对象中包装布尔值

我有一些我想重构的代码.我有很多方法采用相同类型的多个参数,例如:

public void foo(String name, String street, boolean b1, boolean b2) { ... }
Run Code Online (Sandbox Code Playgroud)

等等.因为不同的对象只能通过名称来区分,所以我想将它们包装在Objects(Enums)中,这样我就可以使用该语言的类型系统(在本例中为Java).

public class Name {
    private String value;
    public String getValue() { return value; }
    // ...
}
Run Code Online (Sandbox Code Playgroud)

像这样我可以强制调用代码传递某种类型的对象.这样可以确保它不会意外混淆方法参数的顺序,因此不会在运行时产生意外行为:

foo(new Name("John"), new Street("Broadway"), new B1(true), new B2(false);
Run Code Online (Sandbox Code Playgroud)

这使得重构更加安全,只要你愿意,你可以通过系统携带对象,其中的数据,字符串始终是安全的.只有在需要它时,才能通过调用getValue()来获得它.

现在,对于包装字符串的对象,它非常简单,因为有许多状态实例可以存在.

但是布尔包装器怎么样?这些是TRUE或FALSE.实现只是看起来,有点好笑:

public enum Quanto {

    YES() {
        protected boolean isQuanto() {
            return true;
        }
    },
    NO() {
        protected boolean isQuanto() {
            return false;
        }
    };

    protected …
Run Code Online (Sandbox Code Playgroud)

java refactoring

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

比较两个Date实例是否指向同一天

我有两个java.util.Date的Java实例,我必须找出它们是否在同一天引用.

我可以用艰难的方式做到这一点,把日期分开并比较日子,确保年份也匹配.

由于这是一个常见问题,我希望能够更容易地解决这个问题.

谢谢!

java datetime

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

我可以有一个使用 Spring Data JPA 处理多个实体类的 JPA 存储库接口吗?

我不太喜欢Spring Data JPA ,并且在Spring Boot项目中遇到以下问题。

对于如何正确处理这种情况,我有以下架构疑问:

我有一个由这样的接口实现的存储库,我在其中定义我的“查询方法”:

public interface ExcelRepository extends CrudRepository<Country, Integer> {
    
    public List<Country> findAllByOrderByCountryNameAsc();

    public List<BlockAttackDetail> findAllByOrderByAttackTypeAcronymAsc();
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在扩展CrudRepository接口,并指定了一个名为Country的模型类,映射数据库上的特定表。

我添加了第二种方法,用于处理映射不同数据库表的另一个实体类(BlockAttackDetail)。

因此,启动我的应用程序时,我收到此错误,因为此存储库仅适用于由Country实体类映射的数据库表:

Caused by: org.springframework.data.mapping.PropertyReferenceException: No property attackTypeAcronym found for type Country!
Run Code Online (Sandbox Code Playgroud)

我的问题是:我是否必须创建多个 JPA 存储库接口(每个实体一个),或者存在一种方法让单个 JPA 存储库接口在多个实体类上工作?

在我的具体情况下,我将有一些方法与特定数据库表(与实体)交互,并且我更喜欢有一个处理多个实体类的存储库接口(以避免混淆)。

我可以通过某种方式做到吗?如果我能做到这一点,那么从架构的角度来看是有意义的,或者最好为每个实体类提供一个特定的 JPA 存储库接口?

java spring jpa spring-data-jpa spring-boot

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

Grails和本地Maven依赖

我正在Grails中开发一个小型Web前端.它基本上是一个"超轻量级"客户端应用程序,通过JMS连接异步.

我在项目中有两个依赖项,我想从Maven存储库中提取.它们是activemq和acme-adapter-api内部依赖关系,在远程存储库中不可用.

我设置了这样的BuildConfig.groovy(Grails 1.2M4)文件,以便访问我的依赖项:

repositories {
    grailsPlugins()
    grailsHome()
    mavenCentral()
    mavenRepo('D:/maven-repo')
} dependencies {
    compile 'org.apache.activemq:apache-activemq:4.1.1'
    compile 'com.acme:acme-adapter-api:1.3-SNAPSHOT'
}
Run Code Online (Sandbox Code Playgroud)

当我跑步时grails dependency-report,我可以看到这条线acme-adapter-api,例如:

acme-adapter-api by com.acme  
108 kB (0 kB downloaded, 108 kB in cache)
Run Code Online (Sandbox Code Playgroud)

当我试图跑步时grails compile,我不幸运,因为它然后抱怨它无法解决com.acme小组中的课程.

有趣的是,activemq依赖性似乎不是一个问题......

不同之处在于acme依赖关系不在mavenCentral(),但仅在mavenRepo("D:/maven-repo").所以我想:"也许它不会从本地磁盘中提取它然后......"并将版本更改为一些有趣的(1.999-SNAPSHOT)值,该值在BuildConfig.groovy文件中不存在.grails compile再次运行时,命令超时,说无法找到该版本:

UNRESOLVED DEPENDENCIES
D:/maven-repo: unable to get resource for com/acme#acme-adapter-api;1.999-SNAPSHOT
Run Code Online (Sandbox Code Playgroud)

所以显然本地依赖关系得到了解决,但不知何故不适用于下一步,编译......

grails dependencies compilation build grails-maven

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

在log4j Appender中记录时的循环依赖

我正在编写一个log4j附加程序,该附加程序通过http将日志发送到服务器。我想使用apache-commons中的HttpClient来保持我的代码简洁漂亮。

现在的问题是HttpClient and Co.本身使用log4j。通常这是一件好事,但是当从log4j附加器实现中调用它们时,引入了循环引用或无穷循环,最终导致OutOfMemoryException。

当然,我无需任何第三方库就可以编写所需的内容,但我只是想知道是否存在针对此类问题的已知解决方案?

java log4j appender

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

在Scala中迭代三个以上的数组

我必须将一堆愚蠢的逗号分隔的字符串转换为最终的对象.我首先将字符串拆分为Arrays.然后我需要同时迭代所有这些并从四个值中构建一个Object.

val s1 = Array(1,2,3)
val s2 = Array("a","b","c")
val s3 = Array(10,20,30)
val s4 = Array("u","v","w")
Run Code Online (Sandbox Code Playgroud)

目标Object如下所示:

case class Data(a: Int, b: String, c: Int, d: String)
Run Code Online (Sandbox Code Playgroud)

第一个Data对象必须打印

Data(1,a,10,u)
Run Code Online (Sandbox Code Playgroud)

等等.我找到了三个项目的解决方案:

(s1, s2, s3).zipped foreach { (v1, v2, v3) =>
  println(v1, v2, v3)
}
Run Code Online (Sandbox Code Playgroud)

哪个印刷品:

(1,a,10)
(2,b,20)
(3,c,30)
Run Code Online (Sandbox Code Playgroud)

如果有四个或更多阵列,则不会这样做.Zipped没有为4元组定义:

error: value zipped is not a member of (Array[Int], Array[String], Array[Int], Array[String])
Run Code Online (Sandbox Code Playgroud)

我的Scala有点生疏,所以也许我错过了明显的东西(比如带索引的迭代或其他东西).

for-loop scala

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

三层架构是否有效?

我们正在建立三层架构已有十多年了.划分表示层,逻辑层和数据层应该允许我们在需要时单独交换每个层,无论是通过变更的需求还是新技术.

我从未见过它在实践中工作......

主要是因为(至少)以下原因之一:

  • 三层概念仅在源代码中可见(例如,Java中的包命名),然后将其部署为一个捆绑包.
  • 代表每个层的代码很好地捆绑在它自己的可部署格式中,但随后被抛入同一个进程(例如"企业容器").
  • 每个层都在自己的进程中运行,有时甚至在不同的机器上运行,但是通过静态性质它们相互连接,取而代之的是其中一个意味着打破所有这些.

因此,你通常最终得到的是一个单片,紧密耦合的系统,它不能提供它承诺的架构.

因此,我认为"三层架构"完全是用词不当.它带来的真正好处是代码在逻辑上是合理的.但那是在"写作时间",而不是"运行时间".一个更好的名字就像"责任分层".无论如何,"架构"一词具有误导性.

你对此有何看法?如何实现工作三层架构?我的意思是承诺它的承诺:允许插入一层而不影响其他层.系统应该存活下来并且之后处于明确定义的状态.

谢谢!

n-tier-architecture

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