这是我学习Maven的前几天,我仍然在努力学习基础知识.我有一个外部.jar文件(在公共存储库中不可用),我需要在我的项目中引用它,我正在试图找出我最好的选择.
这是一个没有库的中央存储库的小型项目,所以它必须是一个本地存储库(以某种方式添加到源代码控制,不知道它是否应该以这种方式工作?)或者.jar需要存储在任何正式存储库之外的磁盘.
1)我最好的选择是将.jar文件添加到项目的maven引用中,因为我希望项目和库都在源代码控制中?
2)我似乎还无法让Eclipse看到依赖.我手动将它添加到pom的部分,它在m2eclipse的Dependencies列表中显示正常.mvn compile和mvn包都成功,但运行程序导致:
Exception in thread "main" java.lang.Error: Unresolved compilation problems:
LibraryStuff cannot be resolved to a type
Run Code Online (Sandbox Code Playgroud)
这是在将POM编辑为:
<dependency>
<groupId>stuff</groupId>
<artifactId>library</artifactId>
<version>1.0</version>
<systemPath>${lib.location}/MyLibrary.jar</systemPath>
<scope>system</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我是否应该执行mvn install:install-file,即使我已经编辑了如上所述的pom.xml?
谢谢!
自从开始研究iOS应用程序和目标C以来,我一直对可以声明和定义变量的不同位置感到困惑.一方面我们采用传统的C方法,另一方面我们有新的ObjectiveC指令,在其上添加OO.你能不能帮助我了解最佳实践和情况,我希望将这些位置用于我的变量,或者纠正我目前的理解?
这是一个示例类(.h和.m):
#import <Foundation/Foundation.h>
// 1) What do I declare here?
@interface SampleClass : NSObject
{
// 2) ivar declarations
// Pretty much never used?
}
// 3) class-specific method / property declarations
@end
Run Code Online (Sandbox Code Playgroud)
和
#import "SampleClass.h"
// 4) what goes here?
@interface SampleClass()
// 5) private interface, can define private methods and properties here
@end
@implementation SampleClass
{
// 6) define ivars
}
// 7) define methods and synthesize properties from both public and private
// interfaces
@end
Run Code Online (Sandbox Code Playgroud)
我已经看到这两个术语在各种在线解释中几乎可以互换使用,我咨询过的大多数教科书也不完全清楚这种区别.
是否有一种清晰而简单的方式来解释你们所知道的差异?
类型转换(有时也被称为类型转换)
在期望另一个的上下文中使用一种类型的值.
非转换类型转换(有时称为类型双关语)
不会改变基础位的更改.
强迫
当周围上下文需要第二种类型时,编译器自动将一种类型的值转换为另一种类型的值的过程.
虽然最近使用Objective-C和其中编写的各种库,但我注意到两个非常流行的单例模式.一个版本获取单例实例并调用其实例方法,而其他版本仅公开类方法,并且永远不会为您提供实例.所有这些都旨在抽象对单个资源(StoreKit,CoreData,Parse API等)的访问.例如,这是MKStoreKit中使用的前一种方法:
// initialize singleton during app boot
[MKStoreManager sharedManager]
// sometime later in the app
[[MKStoreManager sharedManager] buyFeature:kFeatureAId
onComplete:^(NSString* purchasedFeature)
{
NSLog(@"Purchased: %@", purchasedFeature);
}
onCancelled:^
{
NSLog(@"User Cancelled Transaction");
}];
Run Code Online (Sandbox Code Playgroud)
或者NSUserDefaults,UIApplication等.另一种方法可以在MagicalRecord或Parse API中看到:
// configure API credentials sometime during app boot
[Parse setApplicationId:@"123456"
clientKey:@"123456"];
// sometime later
PFObject *testObject = [PFObject objectWithClassName:@"TestObject"];
[testObject setObject:@"bar" forKey:@"foo"];
[testObject save];
Run Code Online (Sandbox Code Playgroud)
这两种方法的优点和缺点是什么,其中一种基本上比另一种更好?
不必检索共享实例可以节省一些屏幕空间(性能差异可能无关紧要),但我是否以其他方式搞砸自己,例如,可测试性?
谢谢!
说我定义为每个在推荐树这个帖子,虽然它在我的情况下,一个载体,它希望不应该的问题(他们在编程Clojure的书向量):
(def tree [1 [[2 [4] [5]] [3 [6]]]])
Run Code Online (Sandbox Code Playgroud)
这应该是这样的:
1
/ \
2 3
/ \ |
4 5 6
Run Code Online (Sandbox Code Playgroud)
现在,我想在没有任何传统方法(例如队列)的情况下对树进行广度优先遍历,而是专门使用堆栈来传递信息.我知道这不是最简单的路线,但我主要是做运动.此外,我不打算返回一个集合(我会在之后将其视为练习),而是在我浏览它们时打印出节点.
我目前的解决方案(刚开始使用Clojure,很好):
(defn breadth-recur
[queue]
(if (empty? queue)
(println "Done!")
(let [collections (first (filter coll? queue))]
(do
; print out nodes on the current level, they will not be wrapped'
; in a [] vector and thus coll? will return false
(doseq [node queue] (if (not (coll? node)) (println node)))
(recur (reduce conj (first collections) (rest collections))))))) …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,目前在AppStore中,我一直在手机上显示用户和其他可能感兴趣的人.与此同时,我正在同一部手机上开发下一版本的应用程序.我希望能够将这两个应用程序并排安装在同一设备上.
实现这一目标的规定/最少hacky方式是什么?这有可能吗?理想情况下,这将尽可能自动化,每次部署前无需手动重命名.
谢谢你!
我遇到了Chrome的一个问题,我似乎无法完全理解,我很好奇,如果这里的人们已经处理过它.这不会在Firefox中重现.步骤如下:
开启无痕浏览器,浏览到https://foo.mysite.com并有JS在页面上做一个GET Ajax请求S3的https://s3.amazonaws.com/mystuff/file.json.您回复200响应:
HTTP/1.1 200 OK
x-amz-id-2: somestuffhere
x-amz-request-id: somestuffhere
Date: Tue, 14 Oct 2014 03:06:41 GMT
Access-Control-Allow-Origin: https://foo.mysite.com
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Access-Control-Allow-Credentials: true
Vary: Origin, Access-Control-Request-Headers, Access-Control-Request-Method
Cache-Control: max-age=86400
Content-Encoding: gzip
Last-Modified: Sun, 05 Oct 2014 00:29:53 GMT
ETag: "fe76607baa40a793eb3b3cbd373a3fb8"
Accept-Ranges: bytes
Content-Type: application/json
Content-Length: 5609
Server: AmazonS3
Run Code Online (Sandbox Code Playgroud)打开第二个选项卡,导航到https://bar.mysite.com并让其JS向同一个文件https://s3.amazonaws.com/mystuff/file.json向S3发出GET ajax请求.取回以下304响应:
HTTP/1.1 304 Not Modified
x-amz-id-2: somestuffhere
x-amz-request-id: somestuffhere
Date: Tue, 14 Oct 2014 03:06:58 GMT
Access-Control-Allow-Origin: https://bar.mysite.com
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: …Run Code Online (Sandbox Code Playgroud)在使用GitHub托管的远程存储库时,我对SSH密钥的概念感到困惑.我按照http://help.github.com/win-set-up-git/中的说明生成了密钥,但是现在我有多个开发人员推进了回购,我不清楚我们是否都要分享一个SSH密钥,或者如果我们都需要为每台机器生成一个单独的密钥并使用它?
有人可以帮我澄清一下吗?
我有一个需要每分钟执行一次的周期性任务(使用delayed_job).我希望Rails在加载完成后立即自动排队,如果系统中还没有这样的任务.
在整个Rails启动流程结束时运行一些代码的好地方是什么?有人建议使用config/environments/development.rb(或其他环境),但是当我从那里排队作业时,delayed_job会给我ActiveRecord问题.
我咨询了http://guides.rubyonrails.org/initialization.html,似乎也没有明确的位置.
是否可以通过rake或其他方式在我的应用程序代码外部完成这种部署后设置?有什么建议?
谢谢!
我一直在努力优化我的项目的数据库调用,我注意到下面两个相同调用之间的性能"显着"差异:
connection = ActiveRecord::Base.connection()
pgresult = connection.execute(
"SELECT SUM(my_column)
FROM table
WHERE id = #{id}
AND created_at BETWEEN '#{lower}' and '#{upper}'")
Run Code Online (Sandbox Code Playgroud)
和第二个版本:
sum = Table.
where(:id => id, :created_at => lower..upper).
sum(:my_column)
Run Code Online (Sandbox Code Playgroud)
使用第一个版本的方法平均需要300毫秒才能执行(该操作在其中总共被称为几千次),而使用第二个版本的方法需要大约550毫秒.这几乎是速度下降100%.
我仔细检查了第二个版本生成的SQL,它与第一个版本的第一个相同,但是它使用表名添加表列.
谢谢!
postgresql ruby-on-rails database-performance ruby-on-rails-3