给定NSDecimalNumber,我如何找到指数(比例)?
虽然原则上可以通过首先转换为NSString然后进行一些丑陋的字符串操作来实现这一点,但我宁愿避免它.
使用Java BigDecimal,我可以调用scale()方法来获取比例.
NSDecimalNumber是否存在类似的简洁方法?
应用程序包含一个包含自定义UITableViewCell的UITableView.该单元格又包含一个UIImageView.
问题是在cellForRowAtIndexPath中设置图像会使图像占用整个UITableViewCell区域:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
NSString *path = [[NSBundle mainBundle] pathForResource:@"bigrect" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:path];
cell.imageView.image = image;
return cell;
}
Run Code Online (Sandbox Code Playgroud)

在IB中,已选择"Aspect Fit"作为模式,但更改此字段对结果没有明显影响.
但是,当从IB设置图像时,在我的代码中没有调用cell.imageView.image = image,结果正是我想要看到的.图像保持在我为IB中的UIImageView定义的边界内,并且不会尝试缩放以适应UITableViewCell的整个垂直高度:

我正在使用的图像是1307x309像素,如果这很重要的话.测试在iOS 6.1模拟器上运行.
我从UIIMageView文档中注意到了这一点:
在iOS 6及更高版本中,如果为此视图的restorationIdentifier属性指定值,则会尝试保留显示图像的帧.具体来说,该类保留视图的bounds,center和transform属性的值以及底层的anchorPoint属性.在恢复期间,图像视图会恢复这些值,以使图像与之前完全一致.有关状态保存和恢复如何工作的更多信息,请参阅iOS应用程序编程指南.
但是,我能找到的文档中没有任何内容可以解决问题.在"身份"下向IB中的UIImageView添加"Foo"的"恢复ID"并未改变行为.取消选中"使用Autolayout"也不会改变行为.
在设置图像时,如何防止iOS在UITableViewCell中调整UIImageView的大小?
我正在编写一个带有单元测试的 Rust 库(从货物生成)。
我想在我的单元测试中使用 extern crate maplit以便能够使用类似 JavaScript 的 hashmap 文字。我不想在我的库代码中使用 maplit。
maplit 提供了一个显然必须使用#[macro_use] 激活的宏。我能够让这一切正常工作的唯一方法是将它放在顶部lib.rs:
#[cfg(test)] #[macro_use] extern crate maplit;
// my crate-specific stuff
Run Code Online (Sandbox Code Playgroud)
在这一点上,我意识到我不知道 #[cfg(test)] 到底是做什么的。我在我的测试中使用它。根据约定,这些包含在库代码中,如下所示:
// some library code
#[cfg(test)]
mod test {
use super::*;
// tests here
}
Run Code Online (Sandbox Code Playgroud)
我原以为#[cfg(test)] 行将文件(或块?)结束之前的内容标记为仅适用于测试配置。
如果是这样,那么将此指令放在顶部lib.rs似乎是一个问题。当我编译一个发行版时,我的整个库不会被删除吗?
我试图找到有关 #[cfg(test)] 究竟做了什么的文档,但无济于事。
RESTful,超文本驱动的系统需要使客户端能够创建依赖于三种或更多不同类型资源的新资源.揭示此功能的最佳方法是什么?
举个例子,假设我经营一家在线商店.服务器知道四种资源:
订单发货时,客户需要通过在服务器上创建新的货件来记录此事件.货件将需要参考目的地,订单和包装工.
为了实现新货物的创建,我可以想到三种方法,我不喜欢它们中的任何一种:
我不喜欢选项1,因为Shipment媒体类型还定义了Order,Packer和Destination的链接.这里,"链接"是由人类可读的名称,URI和媒体类型组成的JSON哈希.将"order_uri","packer_uri"和"destination_uri"添加到媒体类型似乎不是很干,因为它复制了相关资源的URI.
选项2使用深度嵌套的URI,这些URI看起来既不易维护也不捕获任何有意义的分层信息.
选项3在客户端和Shipments的创建之间进行了另一层抽象,这使得系统更难学习.
如果发货仅依赖于另一个资源,则选项2会更有意义,但在这种情况下不会.就目前而言,我赞成选项3,但更喜欢更好的东西.
在此示例中,创建新货件的URI和媒体类型的最佳组合是什么?还应该考虑其他什么方法?
更新:下面是Shipment资源的JSON示例表示,显示订单,打包程序和目标的链接.选项1所需的URI重复出现在"货件"哈希中:
{
"shipment":{
"created_at": "Wed Sep 09 18:38:31 -0700 2009",
"order_uri":"http://example.com/orders/815",
"packer_uri":"http://example.com/packers/42",
"destination_uri":"http://example.com/destinations/666"
},
"order":{
"name":"the order to which this shipment belongs",
"uri":"http://example.com/orders/815",
"media_type":"application/vnd.com.example.store.Order+json"
},
"packer":{
"name":"the person who packed this shipment",
"uri":"http://example.com/packers/42",
"media_type":"application/vnd.com.example.store.Packer+json"
},
"destination":{
"name":"the destination of this shipment",
"uri":"http://example.com/destinations/666",
"media_type":"application/vnd.com.example.store.Destination+json"
}
}
Run Code Online (Sandbox Code Playgroud)
"发货"哈希的内容(减去"created_at"字段)将被POST.使用GET时,将发送上面的完整发货表示.
假设我在Heroku上部署了Rails应用程序.如何在我的视图中显示这些信息?
Rails在哪里存储通过在测试期间保存activerecord对象而创建的数据?
我以为我知道这个问题的答案:显然在_test数据库中.但看起来这不是真的!
我使用这个系统来测试在rspec测试期间保存的ActiveRecord数据发生了什么:
$ rails -d mysql test
$ cd测试
$ nano config/database.yml ...
...创建mysql数据库test_test,test_development,test_production
$ script/generate rspec
$ script/generate rspec_model foo
编辑Foo迁移:
class CreateFoos$ rake db:migrate
edit spec/models/foo_spec.rb:
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') describe Foo do before(:each) do @valid_attributes = { :bar => 12345 } end it "should create a new instance given valid attributes" do foo = Foo.new(@valid_attributes) foo.save puts "sleeping..." sleep(20) end end$ rake spec
当您看到"正在..."时,更改为另一个打开的终端,其中一个mysql会话连接到test_test数据库并执行:
mysql> select*from foos; 空集(0.00秒)为什么mysql会话在测试运行时不显示test_test数据库中的任何记录?
据我所知,使用超文本驱动的 RESTful Web服务,客户端不应该知道有关服务器URI布局的任何信息,除了几个众所周知的入口点.这应该使服务器能够控制自己的URI空间并减少与客户端的耦合.
当服务的客户端发送成功请求以创建新资源时,服务响应201 CREATED并在Location头字段中提供可以访问新资源的URI.
是否应该允许客户端存储此URI以便将来能够直接访问资源,如果存在多长时间?如果客户端缓存了URI,这似乎就是在设置一种情况,即每次服务器更改其URI布局时,都需要确保在访问旧URI时提供永久重定向.否则客户端会中断.几年来,这种重定向系统可能会失控.
与使用URI模板的REST-RPC混合方法相比,这种情况似乎不会使服务器对其URI空间有更多的控制.
有很多关于缓存表示的信息,但是在超文本驱动的RESTful系统中缓存URI呢?
尝试从Heroku中提取数据库会在整个过程中产生错误(如下所示).
使用:雪豹; Heroku的-1.8.2; 水龙头-0.2.26; Rails的2.3.5; MYSQL-42年5月1日.从错误消息中可以看出,数据库很小.
Heroku技术支持说它在我的系统上是一个问题,但没有提供如何解决它的方法.
我之前见过这个问题 - 例如这里.我怎样才能解决这个问题?
错误:
$ heroku db:pull
Auto-detected local database: mysql://[...]@localhost/[...]?encoding=utf8
Receiving schema
Receiving data
17 tables, 9,609 records
[...]
/Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/adapters/mysql.rb:166:in `query': Mysql::Error MySQL server has gone away (Sequel::DatabaseError)
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/adapters/mysql.rb:166:in `_execute'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/adapters/mysql.rb:125:in `execute'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/connection_pool.rb:101:in `hold'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/database.rb:461:in `synchronize'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/adapters/mysql.rb:125:in `execute'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/database.rb:296:in `execute_dui'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/dataset.rb:276:in `execute_dui'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/adapters/mysql.rb:365:in `execute_dui'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/dataset/convenience.rb:126:in `import'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/dataset/convenience.rb:126:in `each'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/dataset/convenience.rb:126:in `import'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/adapters/mysql.rb:144:in `transaction'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/connection_pool.rb:108:in `hold'
from /Library/Ruby/Gems/1.8/gems/sequel-3.0.0/lib/sequel/database.rb:461:in `synchronize' …Run Code Online (Sandbox Code Playgroud) 假设我有一个RESTful,超文本驱动的服务,可以模拟冰淇淋店.为了更好地管理我的商店,我希望能够显示每日销售的冰淇淋的数量和美元价值的每日报告.
看起来这个报告功能可以作为名为DailyReport的资源公开.可以快速生成DailyReport,并且在服务器上实际存储报告似乎没有任何优势.我只想要一个DailyReport几天,其他日子我不关心获得DailyReport.此外,在服务器上存储DailyReports会使客户端实现复杂化,这需要记住删除不再需要的报表.
DailyReport是暂时的; 它的表示只能检索一次.实现此目的的一种方法是提供链接"/ daily-reports",POST将返回包含DailyReport表示的响应,该表示列出当天销售的信息.
编辑:我们也说我确实想做一个POST请求.DailyReport有许多不同的选项可用于创建视图,例如按字母顺序排序冰淇淋类型,按美元价值 - 或包括每小时分解 - 或可选地包括当天的温度 - 或过滤掉某些冰淇淋类型(作为列表).我不是将查询参数与GET一起使用,而是使用适当的选项POST一个DailyReport表示(使用明确定义的自定义媒体类型来记录每个选项).我回来的表示将显示我的选项以及报告本身.
这是考虑问题的正确方法,还是应该使用其他方法?如果正确,在实现DailyReport资源时,哪些特殊注意事项可能很重要?(例如,在POST请求后返回时设置Location标头可能不合适).
给定具有数组属性的Neo4J节点,如何创建Cypher查询以仅返回与数组文字匹配的节点?
使用控制台我创建了一个名为"list"的数组属性的节点:
neo4j-sh (0)$ create n = {list: [1,2,3]};
==> +-------------------+
==> | No data returned. |
==> +-------------------+
==> Nodes created: 1
==> Properties set: 1
==> 83 ms
neo4j-sh (0)$ start n=node(1) return n;
==> +-----------------------+
==> | n |
==> +-----------------------+
==> | Node[1]{list:[1,2,3]} |
==> +-----------------------+
==> 1 row
==> 1 ms
Run Code Online (Sandbox Code Playgroud)
但是,在给定与数组文字匹配的WHERE子句的情况下,我的查询不会返回刚刚创建的Node:
neo4j-sh (0)$ start n=node(1) where n.list=[1,2,3] return n;
==> +---+
==> | n |
==> +---+
==> +---+
==> 0 row
==> 0 …Run Code Online (Sandbox Code Playgroud)