我想sanitize在控制器内打电话.这是我试过的:
class FooController < ApplicationController
include ActionView::Helpers::SanitizeHelper
# ...
end
Run Code Online (Sandbox Code Playgroud)
但是,我收到此错误:
undefined method `white_list_sanitizer' for FooController:Class
Run Code Online (Sandbox Code Playgroud)
我四处搜索,人们建议将include行切换为include ActionView::Helpers,但这会导致此错误:
undefined method `url_for' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
什么是正确的打电话方式sanitize?我正在使用Rails 2.3.5.
我正在尝试在Firefox扩展中使用jQuery,并且实际上想要使用jQuery来操作当前页面的DOM,而不是XUL文件的上下文.因此,我在我的XUL文件中加载jQuery,并将其传递给沙盒中的一些脚本(使用Greasemonkey扩展编译器http://arantius.com/misc/greasemonkey/script-compiler).由于jQuery没有加载页面DOM,我想将其选择器上下文设置为页面DOM,而不是总是将其传递给jQuery调用.
我按照如何在Firefox扩展中使用jQuery的解决方案,它几乎实现了我想要的.
jQuery.noConflict();
$ = function(selector,context){ return new jQuery.fn.init(selector,context||example.doc); };
$.fn = $.prototype = jQuery.fn;
Run Code Online (Sandbox Code Playgroud)
我可以调用jQuery()函数,页面DOM将用作上下文.但是,我不能使用像jQuery.trim这样的函数,因为它们没有定义.
我从解决方案中想到了这一点
$.fn = $.prototype = jQuery.fn;
Run Code Online (Sandbox Code Playgroud)
将让我自己的jQuery对象继承所有jQuery原型属性,但显然不会.
给一个vanilla jQuery对象,如何重新定义它以使用某个元素作为选择器上下文,同时保留所有jQuery函数?
我有一段代码可以由多个线程执行,需要执行I/O绑定操作,以初始化存储在一个中的共享资源ConcurrentMap.我需要使这段代码线程安全,并避免不必要的调用来初始化共享资源.这是有缺陷的代码:
private ConcurrentMap<String, Resource> map;
// .....
String key = "somekey";
Resource resource;
if (map.containsKey(key)) {
resource = map.get(key);
} else {
resource = getResource(key); // I/O-bound, expensive operation
map.put(key, resource);
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,多个线程可以检查ConcurrentMap并查看资源不存在,并且所有尝试调用getResource()哪个都很昂贵.为了确保共享资源只进行一次初始化,并在资源初始化后使代码有效,我想做这样的事情:
String key = "somekey";
Resource resource;
if (!map.containsKey(key)) {
synchronized (map) {
if (!map.containsKey(key)) {
resource = getResource(key);
map.put(key, resource);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是双重检查锁定的安全版本吗?在我看来,自从调用检查以来ConcurrentMap,它的行为类似于声明的共享资源,volatile从而防止可能发生的任何"部分初始化"问题.
我正在使用Heroku,并为我的应用添加了几个自定义域名,即myapp.com和www.myapp.com.
我在GoDaddy的DNS有三个A记录,'@'指向三个单独的Heroku IP,以及一个指向'www'子域的CNAME proxy.heroku.com.
我想要做的是将任何流量重定向www.myapp.com到myapp.com.我尝试将CNAME设置为"@",但仍然保留在同一个域中.有没有办法可以在DNS级别强制进行此重定向?
我正在尝试在我的.gitignore文件中添加一些模式,以忽略Xcode生成的*.mode1v3和*.pbxuser文件.但是,我的应用名称中有一个空格,因此我要忽略的文件位于Foo Bar.xcodeproj/目录中.添加这些模式的变体似乎不起作用:
*.mode1v3
Foo Bar.xcodeproj/
Foo Bar.xcodeproj/*.mode1v3
Foo Bar.xcodeproj/username.mode1v3
Run Code Online (Sandbox Code Playgroud)
.gitignore模式应该是什么?
我想在用户拍照或选择保存的照片后添加确认视图.确认视图将仅显示所选图像,并在工具栏中显示取消和上传按钮.
我的UIImagePickerController是从我的一个视图控制器以模态方式呈现的,它由导航控制器控制,导航控制器又由标签栏控制器控制.
如何以模态方式显示我的确认视图,以便在用户选择照片时占据整个屏幕(如图像选择器视图)?理想情况下,我想要这样的东西:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];
UIViewController *modal = [[UIViewController alloc] init];
modal.view = confirmationView;
[self presentModalViewController:modal animated:YES];
[modal release];
}
Run Code Online (Sandbox Code Playgroud)
但是,这会导致应用崩溃.我应该从PICKER以模态方式呈现确认视图吗?如果是这样,我如何确保在取消确认视图时,也不会显示选择器?
编辑:
修复了我发布的代码中的错误.这就是当我尝试从内存而不是复制+粘贴打字时发生的事情:(无论如何,到目前为止的建议没有帮助.
如果我提出模态控制器那么解雇选择器,没有任何反应,大概是因为两个控制器随后被解雇.
如果我解除拾取器然后呈现模态控制器,我得到一个关于模态转换的例外:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Attempting to begin a modal transition from <UINavigationController: 0x6b33940> to <UIViewController: 0x6b62b00> while a transition is already in progress. Wait for viewDidAppear/viewDidDisappear to know the current transition has completed'
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过使用基于磁盘的图像缓存而不是通过网络来提高我的图像密集型iPhone应用程序的性能.我在SDImageCache(http://github.com/rs/SDWebImage/blob/master/SDImageCache.m)之后模拟了我的图像缓存,并且几乎相同但没有异步缓存进/出操作.
我有一些滚动视图和表视图异步加载这些图像.如果映像在磁盘上,则从映像缓存加载,否则发出网络请求,后续结果存储在缓存中.
我遇到的问题是,当我滚动浏览滚动视图或表视图时,从磁盘加载图像时会出现明显的延迟.特别是,在滚动视图中从一个页面转到另一个页面的动画在转换过程中具有小的冻结.
我试图解决这个问题:
有没有办法让我的磁盘访问性能更好或对UI的影响更小?
请注意,我已经在内存中缓存了这些图像.因此,一旦将所有内容加载到内存中,UI就会很好并且响应迅速.但是当应用程序启动时,或者如果调度了低内存警告,我会遇到许多这些UI滞后,因为图像是从磁盘加载的.
相关的代码片段如下.我不认为我做任何花哨或疯狂的事情.在iPhone 3G上,这种延迟似乎并不明显,但在第二代iPod Touch上却非常明显.
图像缓存代码:
这是我的图像缓存代码的相关片段.非常直截了当.
- (BOOL)hasImageDataForURL:(NSString *)url {
return [[NSFileManager defaultManager] fileExistsAtPath:[self cacheFilePathForURL:url]];
}
- (NSData *)imageDataForURL:(NSString *)url {
NSString *filePath = [self cacheFilePathForURL:url];
// Set file last modification date to help enforce LRU caching policy
NSMutableDictionary *attributes = [NSMutableDictionary dictionary];
[attributes setObject:[NSDate date] forKey:NSFileModificationDate];
[[NSFileManager defaultManager] setAttributes:attributes ofItemAtPath:filePath error:NULL];
return [NSData dataWithContentsOfFile:filePath];
}
- (void)storeImageData:(NSData *)data forURL:(NSString *)url {
[[NSFileManager defaultManager] createFileAtPath:[self cacheFilePathForURL:url] contents:data attributes:nil];
}
Run Code Online (Sandbox Code Playgroud)
滚动视图控制器代码
这是我用于在滚动视图控制器中显示图像的相关代码片段. …
我有一个静态方法的类,我目前正在使用JMockit进行模拟.说它看起来像:
public class Foo {
public static FooValue getValue(Object something) {
...
}
public static enum FooValue { X, Y, Z, ...; }
}
Run Code Online (Sandbox Code Playgroud)
我有另一个类(让我们称之为MyClass)调用Foo的静态方法; 我正在尝试为这个类编写测试用例.我的JUnit测试,使用JMockit,看起来像这样:
public class MyClassTest extends TestCase {
@NonStrict private final Foo mock = null;
@Test public void testMyClass() {
new Expectations() {
{
Foo.getValue((Object) any); result = Foo.FooValue.X;
}
};
}
myClass.doSomething();
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,花花公子,当测试执行时,我的MyClass实例将在调用Foo.getValue()时正确获取Foo.FooValue.X的枚举值.
现在,我正在尝试迭代枚举中的所有值,并重复运行测试.如果我将上面的测试代码放在for循环中并尝试将模拟静态方法的结果设置为每个枚举值,那么这不起作用.Foo.getValue()的模拟版本总是返回Foo.FooValue.X,并且在迭代枚举时从不返回任何其他值.
如何在单个JUnit测试中多次模拟静态方法?我想做这样的事情(但显然它不起作用):
public class MyClassTest extends TestCase {
@NonStrict private final Foo mock = null;
@Test public void testMyClass() …Run Code Online (Sandbox Code Playgroud) 我试图UITextView在基本视图中使用简单,但它会导致应用程序偶尔崩溃.有时它在我输入内容时崩溃,有时当我滚动时,有时在我按下返回键后.从堆栈跟踪看,它看起来像是由图形或动画相关代码引起的,用于渲染用于拼写检查,语法检查等的UI元素.
为什么这会让我的应用程序崩溃?我是否需要导入其他库,还是需要为UITextView指定某种委托?我确实只是在准系统视图中有一个简单的UITextView,没什么特别的.
这是堆栈跟踪:
Program received signal: “EXC_BAD_ACCESS”.
(gdb) bt
#0 0x9535f9b1 in ?? ()
#1 0x9534c33f in ?? ()
#2 0x9534c13e in ?? ()
#3 0x9634df5c in ?? ()
#4 0x9418d244 in CGDataProviderRetain ()
#5 0x963b7036 in ?? ()
#6 0x98263486 in CGImageReadCreateWithProvider ()
#7 0x982633a2 in CGImageSourceCreateWithDataProvider ()
#8 0x020c0947 in CGImageCreateWithPNGDataProvider ()
#9 0x02ebfeed in WKGraphicsCreateImageFromBundleWithName ()
#10 0x02ebfc3b in WebCore::GraphicsContext::drawLineForMisspellingOrBadGrammar ()
#11 0x02ebf9cb in WebCore::InlineTextBox::paintSpellingOrGrammarMarker ()
#12 0x02e73932 in WebCore::InlineTextBox::paintDocumentMarkers ()
#13 0x02e730a1 in WebCore::InlineTextBox::paint …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一个朴素的贝叶斯分类器来对文档进行分类,这些文档基本上是特征集(而不是包),即每个特征包含一组独特的特征,每个特征在文档中最多只能出现一次.例如,您可以将这些功能视为文档的唯一关键字.
我一直密切关注着Rennie等人.人.http://www.aaai.org/Papers/ICML/2003/ICML03-081.pdf上的论文,但我遇到了一个似乎没有解决的问题.即,由于文档具有较少数量的特征,因此对短文档进行分类导致更高的后验概率; 反之亦然长文件.
这是因为后验概率被定义为(忽略分母):
P(class|document) = P(class) * P(document|class)
Run Code Online (Sandbox Code Playgroud)
扩展到
P(class|document) = P(class) * P(feature1|class) * ... * P(featureK|class)
Run Code Online (Sandbox Code Playgroud)
由此可见,具有较少特征的短文档将具有较高的后验概率,仅仅因为较少的术语可以相乘.
例如,假设功能"foo","bar"和"baz"都出现在积极的训练观察中.然后,具有单个特征"foo"的文档将具有比具有特征{"foo","bar","baz"}的文档更高的被归类为正类的后验概率.这看似违反直觉,但我不太清楚如何解决这个问题.
是否可以进行某种长度标准化?一个想法是将文档的大小添加为一个特征,但这似乎不太正确,因为结果将随着训练数据中文档的大小而变化.
iphone ×4
java ×2
bayesian ×1
caching ×1
cname ×1
concurrency ×1
controller ×1
data-mining ×1
dns ×1
dom ×1
git ×1
gitignore ×1
greasemonkey ×1
helper ×1
heroku ×1
image ×1
javascript ×1
jmockit ×1
jquery ×1
junit ×1
macos ×1
methods ×1
objective-c ×1
sanitize ×1
static ×1
uiscrollview ×1
uitableview ×1
uitextview ×1
xcode ×1