ruby-noob活动记录查询问题的种类:
Magazine
has_many :subscriptions
User
has_many :subscriptions
Subscription
belongs_to :user
belongs_to :magazine
Run Code Online (Sandbox Code Playgroud)
在控制器中,我想有效地询问current_user是否订阅a_magazine。我认为应该是以下内容...
Subscription.where("user_id = ? and magazine_id = ?", current_user.id, a_magazine.id).count > 0
Run Code Online (Sandbox Code Playgroud)
a)看起来正确吗?b)是否有更有效的方法(假设FK上有索引)c)从风格上来说,是否有更可接受或更简洁的方法?
提前致谢...
JS的新手,我也学习使用加密库.我不明白为什么使用相同的秘密签署/编码相同的消息会产生不同的结果.
我使用jsSHA 1.3.1这里找到,而这里所描述CryptoJS 3.0.2试图建立一个base64的SHA-1编码的HMAC签名.这是代码:
在HTML ...
<script src="lib/jsSHA/src/sha1.js"></script>
<script src="http://crypto-js.googlecode.com/svn/tags/3.0.2/build/rollups/hmac-sha1.js"></script>
Run Code Online (Sandbox Code Playgroud)
在js ...
var message = "shah me";
var secret = "hide me";
var crypto = CryptoJS.HmacSHA1(message, secret).toString(CryptoJS.enc.Base64) + '=';
var shaObj = new jsSHA(message, "ASCII");
var jssha = shaObj.getHMAC(secret, "ASCII", "B64") + '=';
return "crypto answer is " + crypto + " jssha answer is " + jssha;
Run Code Online (Sandbox Code Playgroud)
你能帮我解释一下这些结果有何不同吗?
加密答案是3e929e69920fb7d423f816bfcd6654484f1f6d56 = jssha答案是PpKeaZIPt9Qj + Ba/zWZUSE8fbVY =
更重要的是,这两者都与我在轨道中生成的签名不同,就像这样......
digest = OpenSSL::Digest::Digest.new('sha1')
raw_signature = OpenSSL::HMAC.digest(digest, "hide me","shah me")
b64_signature …Run Code Online (Sandbox Code Playgroud) 我正在使用我在这里下载的 jsSHA 1.3.1,并在我的localhost上用于学习项目.它的结果与我通过引用遥控器获得的副本略有不同,如下所示:
<script src="https://raw.github.com/Caligatio/jsSHA/master/src/sha1.js"></script>
Run Code Online (Sandbox Code Playgroud)
由于@Andreas 在这里的出色答案,远程拷贝对我来说效果很好.
但它给我留下了一个新问题:包含副本与引用远程js库的理由是什么?它是否像'销售'库一样,使我的应用程序与代码中的后续更改隔离开来?
我希望我的类检测到一个新实例与某个现有实例等效(相对于isEqual:和hash),并且只创建唯一实例.这是我认为可以完成工作的代码,但是我担心它会做一些我无法发现的愚蠢行为......
假设它是一个NSURLRequest子类,如下所示:
// MyClass.h
@interface MyClass : NSMutableURLRequest
@end
// MyClass.m
@implementation MyClass
+ (NSMutableSet *)instances {
static NSMutableSet *_instances;
static dispatch_once_t once;
dispatch_once(&once, ^{ _instances = [[NSMutableSet alloc] init];});
return _instances;
}
- (id)initWithURL:(NSURL *)URL {
self = [super initWithURL:URL];
if (self) {
if ([self.class.instances containsObject:self])
self = [self.class.instances member:self];
else
[self.class.instances addObject:self];
}
return self;
}
// Caller.m
NSURL *urlA = [NSURL urlWithString:@"http://www.yahoo.com"];
MyClass *instance0 = [[MyClass alloc] initWithURL: urlA];
MyClass *instance1 = [[MyClass …Run Code Online (Sandbox Code Playgroud) 我没有一个明确的答案,以各种形式看到这个问题.我打算在这里问一下这个问题.我的应用程序需要在启动时工作... inits,一些网络调用,登录等.我不希望我的主视图控制器工作,直到完成.这样做的好方法是什么?
要求:
我想在我的系统中有一个单例,但不是让调用者通过某种'sharedInstance'方法访问它,我希望他们能够不知道他们正在使用单例,换句话说,我我希望来电者能够说:
MyClass *dontKnowItsASingleton = [[MyClass alloc] init];
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,我尝试重写alloc如下:
// MyClass.m
static MyClass *_sharedInstance;
+ (id)alloc {
if (!_sharedInstance) {
_sharedInstance = [super alloc];
}
return _sharedInstance;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:这没关系吗?它似乎工作,但我从来没有覆盖alloc.另外,如果没关系,我可以一直使用这种技术,而不是我一直在做的dispatch_once方法吗?...
+ (id)sharedInstance {
static SnappyTV *_sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_sharedInstance = [[self alloc] init];
});
return _sharedInstance;
}
Run Code Online (Sandbox Code Playgroud) 我正在制作一个玩具应用程序,试图了解这些库,并希望了解我将如何呈现"标签"界面.我想在顶部有几个按钮(或链接,最常见的).选择一个时,它会显示为已选中,并且页面上的主要内容会更改以显示该选项卡上的内容.
我的学习应用程序目前非常简单:
<body>
<div class="content"></div>
</body>
Run Code Online (Sandbox Code Playgroud)
和骨干观点:
var ContentView = Backbone.View.extend({
el: $('.content'),
// ..
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经研究过在html中使用<%tag来制作部分内容,使得ContentView以某种方式负责在那里呈现不同的东西.我已经拥有但不太了解如何追求的另一个想法是几个Backbone视图轮流负责改变一个div.
肯定会欣赏有关规范方法的一些建议,包括如何显示标签按钮以及如何清晰地分离不同标签的视图逻辑.
javascript jquery backbone.js underscore.js single-page-application
我有一个观点,我已经添加了泛和长按UIGestureRecognizer.平底锅用于移动视图.我想做的是注意触摸已停止移动(同时保持活动状态)并触发长按.
我发现在平底锅开始后从未触发长按.我已经尝试设置委托并实现:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
NSLog(@"simultaneous %@", gestureRecognizer.class);
return YES;
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
NSLog(@"require fail %@", gestureRecognizer.class);
return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer self]];
// also tried return YES;
// also tried return [gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer self]];
}
Run Code Online (Sandbox Code Playgroud)
我试过愚弄pan gr的allowableMovement,也无济于事.我只是放弃并在pan gr中使用一个计时器,它被取消,然后重置动作,但我希望SDK能为我做状态机的东西.
我正在创建一个可以在横向和纵向模式下使用iPad的应用程序.我的UIViewControllers的配置如下:
我有一个UIViewController具有UICollectionView以下约束的a:top,leading,trailing和bottom设置为0及其superview(superview是UIView我的UIViewController).
当我点击一个细胞,我推另一个UIViewController在UINavigationController其是所述细胞的细节的viewController.简单.
当我在第一个视图控制器中更改设备方向时,UICollectionView正确设置边界.
这是我的问题:
如果我在中选择一个单元格,UICollectionView则会显示第二个详细信息viewController.然后,如果在第二个ViewController中我改变了设备方向然后我回到第一个viewController,我的视图UIViewController还没有被旋转.我不知道为什么,我尝试了这个没有成功:
self.view.layoutIfNeeded()在viewDidAppear()我的firstViewController中根据当前方向更新约束,它不起作用.这没用,因为我注意到一件事:
我的第一个viewController的框架视图仍然与前一个方向相同,它没有改变......但是如果我再次旋转设备,UIViewController检测方向会改变,并且视图边界设置正确.
所以我的问题是:当我在第二个视图控制器中,并且我正在旋转设备,然后我回到前一个视图控制器时,之前的控制器没有检测到我刚刚在第二个视图控制器.
GIF演示:
之后,我从纵向模式旋转到横向模式,视图 不会更改,因为调试视图层次结构工具显示如下:
在UIView仍处于肖像,因此UICollectionView约束的无法与新的方向进行更新...
有任何想法吗?
我一直在谷歌上搜索这个问题.我有一个带有导航栏的表视图控制器和底部的工具栏.我能够显示工具栏
self.navigationController.toolbaHidden = NO;
Run Code Online (Sandbox Code Playgroud)
然后我像这样在工具栏中添加了一些项目
UIButton *button = [[UIButton buttonWithType:UIButtonTypeRoundedRect] retain];
button.titleLabel.text = @"Button";
UIBarButtonItem *buttonItem = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
[self setToolbarItems:[NSArray arrayWithObject:buttonItem] animated:NO];
[button release];
Run Code Online (Sandbox Code Playgroud)
然而它永远不会奏效.我认为这是正确的方法,但不知何故,它在工具栏上没有显示任何内容.有谁知道原因是什么?或者,如果您知道添加工具栏项目的正确方法,请告诉我们?非常感谢你们.
干杯,
ios ×6
javascript ×3
iphone ×2
objective-c ×2
activerecord ×1
appdelegate ×1
autolayout ×1
backbone.js ×1
cryptography ×1
hmac ×1
jquery ×1
orientation ×1
ruby ×1
sha ×1
sha1 ×1
sql ×1
storyboard ×1
swift ×1
uitableview ×1
uitoolbar ×1