我正在构建一个演示,我想让一个非技术人员很容易设置和运行演示.我已经构建了一个包含大量演示数据的seeds.rb文件.我希望能够通过页面链接提供管理员级别的操作,将rails应用程序重置为已知状态.我不想为这些非技术演示者提供命令行和耙子,因为他们可能会在脚下射击.
我已经研究过在方法中使用load'db/seeds.rb',但这并不是我想要的.我知道我错过了什么,但是什么?
我正在使用Ruby on Rails 3.0.9并且我希望播种生产数据库以便添加一些记录而无需重新构建所有数据库(即,不删除所有现有记录但只添加一些尚未存在的记录) .我想这样做是因为需要新数据才能使应用程序正常工作.
因此,由于我正在使用Capistrano gem,我cap -T在控制台中运行命令以列出所有可用命令并知道如何实现我的目标:
$ cap -T
=> ...
=> cap deploy:seed          # Reload the database with seed data.
=> ...
我不确定"使用种子数据重新加载数据库"中出现的"重新加载"这个词.句子.所以,我的问题是:如果我cap deploy:seed在本地机器上的控制台中运行命令,播种过程将删除生产数据库中的所有现有数据,然后填充它,或者该命令只是在我想要的数据库中添加新数据做?
我正在寻找一个函数,我可以在PHP中传递数组和种子并返回一个"随机"数组.如果我再次传递相同的数组和相同的种子,我会得到相同的输出.
我试过这段代码
//sample array
$test = array(1,2,3,4,5,6);
//show the array
print_r($test);
//seed the random number generator
mt_srand('123');
//generate a random number based on that
echo mt_rand();
echo "\n";
//shuffle the array
shuffle($test);
//show the results
print_r($test);
但它似乎没有用.有关最佳方法的任何想法吗?
这个问题围绕这个问题跳舞,但它已经过时了,没有人提供如何做到的实际答案:我可以通过提供种子随机化数组并获得相同的顺序吗?- "是的,但是怎么?
到目前为止,答案适用于PHP 5.1和5.3,但不适用于5.2.就是这样,我想运行它的机器正在使用5.2.
任何人都可以不使用mt_rand给出一个例子吗?它在php 5.2中被"破坏",因为它不会根据相同的种子给出相同的随机数序列.请参阅php mt_rand页面和错误跟踪器以了解此问题.
我正在尝试使用CarrierWave在Rails 3中使用图像播种数据库,但是我尝试的任何内容似乎都无法手动上传它们.
pi = ProductImage.new(:product => product)
pi.image = File.open(File.join(Rails.root, 'test.jpg'))
pi.store_image! # tried with and without this
product.product_images << pi
product.save!
有人知道如何使用CarrierWave种子吗?
我发现很难找到有关Gnome Shell Extensions的文档.我在Gnome Wiki上发现了一些内容(它是第一级链接),但它并不多:
http://live.gnome.org/GnomeShell/Extensions
这里的问题是GJS和它的绑定.绝对没有文档,有很多SIGSEGV,绑定还没准备好(GLib,Gio等).唯一可行的是从GIR为种子JavaScript实现生成的非官方文档:
http://roojs.org/seed/gir-1.2-gtk-2.0/seed/
哪里可以获得更多例子?我想读取目录,文件,生成进程,打开网络套接字和做其他事情.
更新:演示如何在GJS中逐行读取文件.根据谷歌这是不可能的.谢谢.
在Java中进行一些实验时,我的项目主管提醒我用不同的数字为实验的每次迭代播种.他还提到我应该使用素数作为种子值.这让我思考 - 为什么要素数?为什么没有任何其他数字作为种子?另外,为什么素数必须足够大?有任何想法吗?我自己会问他这个,但是现在凌晨4点,大家都睡着了,我只记得这个问题而且我很想知道答案(我确定你知道这种感觉).
如果你能提供一些参考资料会很好,我对所有这些背后的数学/概念非常感兴趣!
编辑:
我正在使用java.util.Random.
进一步编辑:
我的教授来自C背景,但我正在使用Java.不知道这是否有帮助.似乎使用素数是他的特质,但我认为我们已经发现了一些关于生成随机数的有趣答案.感谢大家的努力!
在我的开发和测试环境中,我想用一堆用户为数据库播种.我正在使用Ruby on Rails v3.2.8和最新的Devise.所以我在db/seeds.rb文件中添加了这一行:
User.create(email: 'test@example.com', encrypted_password: '#$taawktljasktlw4aaglj')
但是,当我运行时rake db:setup,我收到以下错误:
耙子流产了!无法批量分配受保护的属性:encrypted_password
种子用户的正确方法是什么?
是否有可能做到这一点?
如果是这样,你怎么能这样做?
我试图在random.random()安装了不同python3版本的不同系统上重现python的随机序列.
这应该很容易,因为文档说:
大多数随机模块的算法和种子函数都会在Python版本中发生变化,但保证两个方面不会改变:
- 如果添加了新的播种方法,则将提供向后兼容的播种机.
- 当兼容的播种机被赋予相同的种子时,生成器的random()方法将继续产生相同的序列.
所以我希望下面的代码总是打印相同的10个数字,无论具体的python3版本如何:
import sys
print(sys.version)
from random import seed, random
seed(str(1))
for i in range(10):
    print(random())
但是,在两台不同的机器上进行测试:
3.2.3 (default, May  3 2012, 15:51:42) 
[GCC 4.6.3]
0.4782479962566343
0.044242767098090496
0.11703586901195051
0.8566892547933538
0.2926790185279551
0.0067328440779825804
0.0013279506360178717
0.22167546902173108
0.9864945747444945
0.5157002525757287
和
3.1.2 (release31-maint, Dec  9 2011, 20:59:40)  
[GCC 4.4.5]
0.0698436845523
0.27772471476
0.833036057868
0.35569897036
0.36366158783
0.722487971761
0.963133581734
0.263723867191
0.451002768569
0.0998765577881
给出不同的结果.
为什么是这样?有没有办法让它工作(即两次获得相同的随机序列?)
当我通过Register操作创建用户时,应用程序用户运行SecurityStamp.当我添加用户时:
if (!context.Users.Any()) {
                System.Diagnostics.Debug.WriteLine("INSIDE");
                var hasher = new PasswordHasher();
                try {
                    var users = new List<ApplicationUser> { 
                        new ApplicationUser{PasswordHash = hasher.HashPassword("TestPass44!"), Email = "informatyka4444@wp.pl", UserName = "informatyka4444@wp.pl"},
                        new ApplicationUser{PasswordHash = hasher.HashPassword("TestPass44!"), Email = "informatyka4445@wp.pl", UserName = "informatyka4445@wp.pl"}
                        };
                    users.ForEach(user => context.Users.AddOrUpdate(user));
                    context.SaveChanges();
                } catch (DbEntityValidationException e) {
                    System.Diagnostics.Debug.WriteLine("EXC: ");
                    foreach (DbEntityValidationResult result in e.EntityValidationErrors) {
                        foreach (DbValidationError error in result.ValidationErrors) {
                            System.Diagnostics.Debug.WriteLine(error.ErrorMessage);
                        }
                    }
                }
            }
用户没有获得安全标记:

然后当我想登录时,我得到:

问题:如何SecurityStamp为用户生成?
seed ×10
random ×3
ruby ×2
algorithm ×1
arrays ×1
asp.net-mvc ×1
c# ×1
capistrano ×1
carrierwave ×1
devise ×1
factory-bot ×1
gnome ×1
gnome-3 ×1
gnome-shell ×1
java ×1
javascript ×1
php ×1
python ×1
python-3.x ×1
rake ×1