小编iTw*_*nty的帖子

忽略外部库的proguard配置

所以,我想在我的项目中添加一个外部库.图书馆本身很小,大约有300种方法.但它配置为非常自由的,它的proguard配置.我在一个准系统项目中使用/不使用库和/不使用proguard运行了一个简单的测试,这就是我想出来的

Proguard    Lib     Method Count
N           N       15631
Y           N       6370
N           Y       15945
Y           Y       15573
Run Code Online (Sandbox Code Playgroud)

如您所见,启用proguard后,计数为~6000.但是当我添加lib时,尽管库本身只有大约300种方法,但计数却达到了大约15000.

所以我的问题是,如何忽略这个特定库的proguard配置?

更新:

现在无法使用android gradle插件.我找到了没有优先权的android bug.请在提及"不可能"时避免回答,并在可能的解决方法或官方决定之前保持问题开启.否则,你将收集一半的赏金而不增加价值.谢谢!

android proguard gradle android-gradle-plugin

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

Haskell:引用更新函数中先前更新的列表元素

说我有以下定义

data Book = Book {id :: Int, title :: String}
type Shelf = [Book]
Run Code Online (Sandbox Code Playgroud)

假设我有一个假设函数(upd用于更新)

updShelf :: Shelf -> Shelf
updShelf all@(book : books) = updBook book : updShelf books
Run Code Online (Sandbox Code Playgroud)

到目前为止都很好.现在让我们说updateBook函数需要在它之前参考更新的书籍三本书,即书架中位置5的bookBook for book需要参考位置2的书(假设前三本书不需要这样的参考更新).没问题,我说,并修改我的代码:

updShelf :: Shelf -> Shelf
updShelf all@(book : books) prevBook = updBook book prevBook : updShelf books
                where prevBook = ???
Run Code Online (Sandbox Code Playgroud)

我需要帮助的是prevBook功能.虽然我甚至不确定我是否正确地接近这个问题.所以,如果你们有任何更好的建议以不同的方式解决这个问题,我们将非常感激

编辑:

Thomas M. DuBuisson:你的解决方案对我不起作用.原因如下:假设初始货架(全部)状态为

Book {id=1, title="a"}
Book {id=2, title="b"}
Book {id=3, title="c"}
Book {id=4, title="d"}
Book {id=5, title="e"}
Book …
Run Code Online (Sandbox Code Playgroud)

state haskell

9
推荐指数
3
解决办法
677
查看次数

OAuth访问令牌是否应该在存储到DB服务器端之前进行哈希处理?

我正在实现支持资源所有者密码凭据授权流的OAuth服务器.一旦我生成访问令牌,我应该在将令牌存储到数据库之前对其进行哈希处理吗?我主要担心的是,如果令牌请求在我生成令牌并将其与用户名/密码组合相关联后第二次出现,那么就不可能将令牌发送回来,因为它已被哈希处理.我应该在这种情况下抛出错误吗?RFC对此保持沉默.

hash oauth access-token

7
推荐指数
0
解决办法
672
查看次数

Google Cloud Endpoints不尊重etag缓存标头

当我发出GET请求时,我得到200 OK和etag标题:

etag ? "tZIZl_M15FKLVh9sN6Nj0iz1dQE/fA5Fya8Zz6DLGJwPNnIWbruyt30"
Run Code Online (Sandbox Code Playgroud)

在我随后的请求中,我发送了

If-Not-Modified ? "tZIZl_M15FKLVh9sN6Nj0iz1dQE/fA5Fya8Zz6DLGJwPNnIWbruyt30"
Run Code Online (Sandbox Code Playgroud)

标头,但端点仍然发回200 OK而不是304.

如何让我的端点遵守If-Not-Modified标头?使用云端点进行缓存的文档不存在:/

etag google-app-engine caching google-cloud-endpoints

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

Scala:将列表转换为地图

我有一个动物类定义为

case class Animal(name: String, properties: List[String])
Run Code Online (Sandbox Code Playgroud)

给定一个动物列表,我想要一张来自属性的地图 -> 满足该属性的动物列表

举个例子,如果我输入的是,

List(
    Animal("Dog", 
           List("has tail",
                "can swim",
                "can bark",
                "can bite")),
    Animal("Tuna", 
           List("can swim",
                "has scales", 
                "is edible")),
    Animal("Black Mamba",
           List("has scales",
                "is venomous",
                "can bite"))
)
Run Code Online (Sandbox Code Playgroud)

输出应该是

Map(
  "has tail" -> List(Dog)
  "can swim" -> List(Tuna,Dog)
  "can bark" -> List(Dog)
  "has scales" -> List(Tuna,Snake)
  "is edible" -> List(Tuna)
  "is venomous" -> List(Snake)
  "can bite" -> List(Dog,Snake)
)
Run Code Online (Sandbox Code Playgroud)

我对函数式编程还很陌生。我可以以命令式的方式做到这一点,但一直在努力想出一个功能性的解决方案。欢迎任何指点!:)

dictionary functional-programming scala list

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

Haskell:我如何编写一个递归函数,它接受一个元素并给出它的列表,但是具有不同的数据类型?

假设我有如下数据类型:

 data Cell = Cell (Maybe Player)
 data Board = Board [[Cell]]
Run Code Online (Sandbox Code Playgroud)

现在我想生成一个这样的递归函数:

 genBoard :: [Cell] -> Board
 genBoard [] = []
 genBoard c = (take 3 c) : (genBoard $ drop 3 c) -- takes list of 9 Cells and gives 3x3 list of cells
Run Code Online (Sandbox Code Playgroud)

显然上面的代码失败了,因为(:)不能将[Cell]添加到Board,尽管从技术上讲,Board只不过是[[Cell]].我需要将Board作为单独的数据类型来为它提供我自己的show函数.

到目前为止,我提出的最好的是:

genBoardList :: [Cell] -> [[Cell]]
genBoardList [] = []
genBoardList c =  (take 3 c) : (genBoardList $ drop 3 c)

boardListToBoard :: [[Cell]] -> Board
boardListToBoard [] = Board []
boardListToBoard …
Run Code Online (Sandbox Code Playgroud)

recursion haskell types

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

搜索文本字段在iOS 11上的搜索栏中错误放置

我正在使用UISearchController作为导航栏的一部分,使用iOS 11中引入的新API.我在ViewController的viewDidLoad中以下列方式使用它

- (void)viewDidLoad {  
    [super viewDidLoad];  
    [_table setDataSource:self];  
    [_table setDelegate:self];  
    searchController = [[UISearchController alloc] initWithSearchResultsController:nil];  
    [self.navigationItem setSearchController:searchController];  
    [self.navigationItem setHidesSearchBarWhenScrolling:NO];  
    [searchController.searchBar setBackgroundColor:[UIColor greenColor]];  
} 
Run Code Online (Sandbox Code Playgroud)

但是,搜索文本字段将呈现在搜索栏内的错误位置.请看下面的截图.

https://imgur.com/a/Igf49

我检查了视图层次结构,发现搜索栏中的UISearchBarTextField对象(不能直接访问devs)的frame.y值为1,这可能导致此问题.我已经在iOS 11 beta 10和iOS 11 GM上测试了这个.

这是一个已知的问题?有没有解决这个问题?或者是我在我身上做错了什么?

任何帮助将不胜感激 (:

objective-c uinavigationitem ios uisearchcontroller ios11

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

在开始使用spring数据neo4j之前,我是否需要了解spring框架?

这是一个大学项目.教授告诉我们需要将neo4j用于图形数据库,由于POJO不能作为节点存储在neo4j中,我们也需要使用spring数据.听起来不错.当我真正编写代码时,我遇到的教程就是我的头脑.示例代码使用了注释,xml,bean和诸如此类的东西,而没有任何解释它们来自何处.我认为它们都是我没有经验的弹簧框架的一部分.那么在考虑春天neo4j之前我需要学习多少春天?我不能向我的教授寻求帮助,因为他是管理类型的人,他知道像技术这样的所有单词,但不知道它们是如何工作的.

spring neo4j spring-data-neo4j

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