我有一个集合选择如下:
<%= f.collection_select :region_id, Region.find(:all), :id, :name, { :prompt => 'Select a State/Province' }, :style => "width: 200px;" %>
Run Code Online (Sandbox Code Playgroud)
有时会出现来自:prompt选项的提示,但有时则不会.有谁知道我可以在哪里开始解决这个问题?也许我一直在看它太久了......
我有需要驻留在我的数据库(国家,地区,运营商等)的初始数据.我有一个任务rake db:seed将为数据库设定种子.
namespace :db do
desc "Load seed fixtures (from db/fixtures) into the current environment's database."
task :seed => :environment do
require 'active_record/fixtures'
Dir.glob(RAILS_ROOT + '/db/fixtures/yamls/*.yml').each do |file|
Fixtures.create_fixtures('db/fixtures/yamls', File.basename(file, '.*'))
end
end
end
Run Code Online (Sandbox Code Playgroud)
我有点担心,因为这个任务擦除我的数据库干净并加载初始数据.这甚至可能在生产中不止一次这样做的事实吓跑了我.这是正常的,我只需要谨慎吗?或者人们通常以某种方式保护这样的任务?
在过去的几个小时里,我一直在努力思考我应该走哪条路线.我有一个通知模型.到目前为止,我已经使用了notification_type列来管理类型,但我认为最好为通知类型创建单独的类,因为它们的行为方式不同.
现在,有3种方式可以发送通知:短信,推特,电子邮件
每个通知都有:
id
subject
message
valediction
sent_people_count
deliver_by
geotarget
event_id
list_id
processed_at
deleted_at
created_at
updated_at
Run Code Online (Sandbox Code Playgroud)
似乎STI是一个很好的候选人吧?当然Twitter/SMS不会有主题,Twitter也不会有sent_people_count,告别.在这种情况下,我会说他们分享他们的大部分领域.但是,如果我为twitter添加一个"reply_to"字段,为DM添加一个布尔值呢?
我的观点是,现在STI是有道理的,但这是一个案例,我可能会在未来踢我自己,而不仅仅是从MTI开始?
为了使事情更复杂,我想要一个通讯模型,这是一种通知,但区别在于它不会使用event_id或deliver_by.
我可以使用大约2/3的通知基类字段来查看通知的所有子类.STI是不是很明智,或者我应该使用MTI?
在官方文件没有明确规定.我理解EOFError的意思是"文件结束错误",但究竟是什么意思呢?如果文件阅读器到达文件末尾,那对我来说听起来不是一个错误.
服务器本质上是一个运行无限循环侦听端口的后台进程吗?例如:
while(1){
command = read(127.0.0.1:xxxx);
if(command){
execute(command);
}
}
Run Code Online (Sandbox Code Playgroud)
当我说服务器时,我显然不是指物理服务器(计算机).我指的是MySQL服务器,或Apache等.
完全披露 - 我没有时间浏览任何源代码.实际代码示例会很棒!
我在想我在unsubscribe链接中创建一个停用代码及其用户ID.然后,当我的时事通讯的收件人点击该链接时,我可以查找他们的用户ID并查看停用代码是否匹配.
这听起来像是最好的方式吗?
还有什么其他方法?
我知道salt会将相同的密码哈希值设置为不同的值.但是,盐通常使用密码存储在数据库中.所以让我说我是攻击者,这里是我如何使用字典攻击盐(注意在这个例子中我不写出128位哈希或盐为了简洁起见):
user_pw = 'blowfish'
Given:
email = 'blah@blah.com'
hash = '1234567890'
salt = '0987654321'
function attack(){
for each(word in dictionary)
md5( word * salt ) == hash ? cracked_one(email, word)
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这可以防止黑客使用彩虹表......但似乎并没有阻止字典攻击.我想你可以在哈希算法中添加其他东西,但是在安全性的情况下我们必须假设攻击方法是已知的.
因此,盐腌似乎可以防止黑客弄清楚哪些密码可能是字典密码(多个用户拥有的密码)并防止彩虹攻击......但不会阻止字典攻击.
这是正确的分析吗?有关更好安全性的建议吗?
谢谢!
我一直在评估 Flutter 在应用程序中的使用情况,并从一个非常简单的文本列表示例开始。构建第一个视图后,我注意到列表视图滚动不顺畅,因此我仔细查看了展示应用程序,结果发现,虽然Reflectly是一个漂亮的应用程序,但它也遇到了同样的问题 - 滚动非常不稳定简单的文本列表。到目前为止,我已经在 iOS 模拟器、iPhone XR、Samsung Galaxy Android 设备和 Android Pixel 2 XL 模拟器上确认了这一点。
我没有看到有关此问题的讨论,所以我想知道我是否做错了什么,但也怀疑我的示例有多简单,而且 Reflectly 也有同样的问题。
我希望社区能够理解: 1. 我是否做了任何明显错误/愚蠢的事情导致了这种情况 2. 如果你在你的设备上运行,你能看到我所看到的吗?3. 这是否已知并且将会得到解决?如果我选择使用 Flutter,我是否可以放心地看到我的列表在不久的将来会顺利滚动?
下面是您可以运行来重现此内容的代码(抱歉,这有点做作,但我想尝试一下各种 Flutter/Dart 功能):
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'My List',
home: Scaffold(
appBar: AppBar(
title: Text('My List'),
backgroundColor: Color.fromRGBO(255, 0, 0, 0.9),
),
body: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
children: [
Expanded(child: TimeSelector()),
],
)),
));
}
} …Run Code Online (Sandbox Code Playgroud) 我今天开始为我的rails应用程序编写功能测试.我使用RESTful身份验证插件.我遇到了一些令人困惑的事情,我希望有人可以为我澄清.
1)我写了一个快速登录功能,因为我的rails应用程序中的大多数功能都需要身份验证.
def login_as(user)
@request.session[:user_id] = user ? user.id : nil
end
Run Code Online (Sandbox Code Playgroud)
我看到这个函数的问题,它基本上是伪造的身份验证.我应该担心吗?也许只要我在某处测试真正的身份验证方法就可以走这条路.或者这可能是一种糟糕的做法.
2)第二个令人困惑的事情是,在我的功能测试的某些地方,我需要完整的身份验证过程.当用户被激活时,我有do_activate方法为用户创建一些初始对象.它类似于为学生应用程序创建空白笔记本对象和笔对象,如果这是有意义的.
因此,为了正确测试我的应用程序,我需要用户点击该激活状态,以便创建这些对象.我目前正在使用Factory Girl创建用户,然后调用上面的login_as函数来伪造身份验证.
我想另一个选择是跳过完整的身份验证序列,然后用Factory Girl创建空白对象.我可以在其他地方测试正确的身份验证.
你怎么看?如果我应该通过正确的序列,为什么下面的代码不是调用do_activate函数?
user = Factory.create(:user)
user.active = 1
user.save
Run Code Online (Sandbox Code Playgroud)
谢谢!
testing ruby-on-rails restful-authentication functional-testing
我有一些非常基本的代码来使用AVFoundation捕获静态图像.
AVCaptureDeviceInput *newVideoInput = [[AVCaptureDeviceInput alloc] initWithDevice:[self backFacingCamera] error:nil];
AVCaptureStillImageOutput *newStillImageOutput = [[AVCaptureStillImageOutput alloc] init];
NSDictionary *outputSettings = [[NSDictionary alloc] initWithObjectsAndKeys:
AVVideoCodecJPEG, AVVideoCodecKey,
nil];
[newStillImageOutput setOutputSettings:outputSettings];
[outputSettings release];
AVCaptureSession *newCaptureSession = [[AVCaptureSession alloc] init];
[newCaptureSession beginConfiguration];
newCaptureSession.sessionPreset = AVCaptureSessionPreset640x480;
[newCaptureSession commitConfiguration];
if ([newCaptureSession canAddInput:newVideoInput]) {
[newCaptureSession addInput:newVideoInput];
}
if ([newCaptureSession canAddOutput:newStillImageOutput]) {
[newCaptureSession addOutput:newStillImageOutput];
}
self.stillImageOutput = newStillImageOutput;
self.videoInput = newVideoInput;
self.captureSession = newCaptureSession;
[newStillImageOutput release];
[newVideoInput release];
[newCaptureSession release];
Run Code Online (Sandbox Code Playgroud)
我捕获静止图像的方法也非常简单,并打印出AVCaptureVideoOrientationPortrait的方向:
- (void) captureStillImage
{
AVCaptureConnection *stillImageConnection = [AVCamUtilities connectionWithMediaType:AVMediaTypeVideo …Run Code Online (Sandbox Code Playgroud) ruby ×2
avfoundation ×1
c ×1
collections ×1
email ×1
eoferror ×1
file-io ×1
fixtures ×1
flutter ×1
forms ×1
hash ×1
ios4 ×1
newsletter ×1
objective-c ×1
orientation ×1
performance ×1
prompt ×1
random-seed ×1
salt ×1
security ×1
testing ×1
theory ×1
unsubscribe ×1