小编Jam*_*Orr的帖子

礼品卡代码算法

我最近发布了一个关于用户可以在线兑换的礼品卡式代码的代码.我想找到大键空间,低可猜测性和人类可读性之间的最佳权衡.现在,我正在实现,我意识到我完全有另一个问题,更多的是算法挑战.

让我们假设我采用了一些代码格式 - 简单来说从A到Z有10个字符,我开始生成代金券.这样做的正确算法是什么?!

我的第一种方法是将所有可能的代码编号从0到308,915,776,然后开始生成该范围内的随机数.这显然有一个很大的问题 - 我必须检查我的随机数与所有以前生成的凭证代码,如果它与现有的代码冲突,我将不得不丢弃代码并尝试另一个.随着系统累积更多数据,它将减慢速度.在极端情况下,只剩下一个代码,系统几乎不可能正确猜测它.

我可以预先生成所有代码并对其进行随机播放,然后按顺序使用它们.但这意味着我必须存储许多代码,实际上我的密钥空间比我描述的密钥空间大,所以我们讨论的是非常大量的数据.所以这也不太令人满意.

所以这让我顺序使用代码.我不想要可猜测的优惠券代码.购买凭证"AAAAAAAAAY"的用户如果输入"AAAAAAAAAZ",则不应该很有可能获得另一个有效代码.

我可以改变我的字母和我的位置,而不是

'ABCDEFGHIJKLMNOPQRSTUVWXYZ'我用

'LYFZTGKBNDRAPWEOXQHVJSUMIC'

而不是位置

9 8 7 6 5 4 3 2 1 0这些职位是

1 8 0 7 5 4 3 9 2 6

使用这个逻辑,给出代码

LNWHDTECMA

下一个代码将是

LNEHDTECMA

这绝对不太可猜测.但是他们仍然只有一个角色相互关联,并且只给出其中两个优惠券你会知道哪个位置正在增加,并且你有90%的机会在24个猜测或更少的时间内获得下一个代码.

我的"逃生舱"就是抛弃所有这些并与GUID一起使用.他们拥有的字符比我希望用户输入的字符多,并且包含类似I/1和O/0的字符,但是他们神奇地让所有上述麻烦都消失了.不过,考虑到这一点我很开心,也许你也是.我很想听听其他一些建议.你有什么?

谢谢!

algorithm collision

20
推荐指数
3
解决办法
2万
查看次数

SQL Server:启用没有SSMS的远程连接

我的Web服务器上安装了SQL Server Express 2008,默认情况下不允许远程连接(可能是件好事.)我选择不安装SQL Server Management Studio Express以及磁盘空间和其他原因.

我需要启用远程连接,但我能找到的任何指令都涉及使用SSMS来更改该设置.当然有一个transact-sql语句,我可以从sqlcmd.exe更改设置?!

谢谢!

t-sql sql-server ssms sql-server-express

18
推荐指数
3
解决办法
2万
查看次数

Python 3.0的哪些功能会改变您的日常编码?

Py3k 刚刚出来,有很多新东西!我很好奇,最让人兴奋的是什么?哪些功能会影响您每天编写代码的方式,或者您一直期待?

python python-3.x

17
推荐指数
3
解决办法
1601
查看次数

SqlBulkInsert - 如何设置Fire触发器,检查约束?

我正在使用具有有限权限的数据库用户,使用C#方法将ADO.NET 2.0 SqlBulkCopy对象批量插入到MS SQL 2005数据库中.当我尝试运行该操作时,我收到错误消息:

批量复制失败.用户对表'theTable'没有ALTER TABLE权限.ALTER TABLE权限是必需上批量复制操作的目标表,如果该表具有触发器或检查约束,但'FIRE_TRIGGERS'还是 'CHECK_CONSTRAINTS'散装提示没有被指定为选项,以批量复制命令.

我阅读了一些文档并使用构造函数创建了批量复制对象,该构造函数允许我指定这样的东西:

    SqlBulkCopy bc = new SqlBulkCopy(
        System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"],
        SqlBulkCopyOptions.FireTriggers & SqlBulkCopyOptions.CheckConstraints);
Run Code Online (Sandbox Code Playgroud)

但这并没有改变任何东西 - 我得到了和以前一样的错误信息.我尝试摆弄其他一些SqlBulkCopyOptions值,但没有运气.我真的以为这会解决这个问题,我错过了什么吗?

我在表上向用户授予ALTER后测试了该过程,操作成功.但是,这不适合我的情况.

ado.net sql-server-2005 sqlbulkcopy

15
推荐指数
1
解决办法
1万
查看次数

TFS分支/合并符合历史记录视图

我们在最近迁移到VSS TFS系统中有一个开发"主干"的设置,开发人员一直在主干的分支机构中工作,这些分支被合并回来.

我们一直在努力评估我们在入住时的变更设置,这是我们在VSS时代从未做过的事情.但是,当我在源代码管理资源管理器中右键单击一个主干文件并选择历史记录时,我只看到标记为"从开发分支合并"的整体变更集(或者当它们合并时开发人员在那里写的任何东西.)历史记录条目不会甚至似乎包含当时合并了哪个分支的信息,更不用说有关构成它的变更集的任何信息,或者与它们一起发表的评论.

其他TFS用户如何处理此问题?

还有另一种方法来查看我在这里缺少的历史吗?

merge tfs branch

14
推荐指数
3
解决办法
7344
查看次数

如何将非表数据导入SQL Server Reporting Services?

给定:AC#计算引擎加载对象模型,压缩大量数字,并将结果保存到SQL Server中的几个巨大的索引数据库表中.这些表为Web界面,其他软件模块和SQL Server Reporting Services 2005报告提供数据.

我设法让发动机上的很多在软件的最新版本速度更快,速度不够快,现在,它可以要求提供数据-有时甚至比它需要在数据库中查询预先计算的数字的时间更快.我对此感到非常高兴.

这一突破意味着我们可以根据Web界面和其他软件模块的请求生成数据.但是缓存表还不能消亡,因为它们被SSRS报告(或者更具体地说,是通过查询表并将数据提供给SSRS的存储过程)使用.

缓存表很痛苦,就像任何缓存都是软件世界的痛苦一样.没有太多的细节,他们有同步问题,锁定问题等等.如果我不必担心保持这些darned表更新,软件将更好地工作.

但我怎样才能将数据导入SSRS?我做了很多研究,没有什么看起来太有希望了:

  • 我们可以通过Web服务提供数据并使用SSRS XML DPE.但这看起来有点可怕 - 我是对的,你必须自己解析你的SOAP信封吗?!它不支持XPath,而是一种专有的XPath-y方言?我们的报告编写者了解T-SQL,这就是他们最擅长的.
  • 使用SQL CLR来托管我们的API是不可取的 - 它是一个很大的应用程序,如果不创建应用程序对象并登录等,你就无法做任何事情.
  • 使用SQL CLR联系Web应用程序上的Web服务 - 这是迄今为止最有希望的(本文有用http://www.simple-talk.com/sql/sql-server-2005/practical-sql- server-2005-clr-assemblies /.)有没有人尝试过这种方法?它是否运行良好,是否可以提供大型数据集?OTOH我被客户端数据库服务器上的额外设置关闭了.
  • 任何其他建议将不胜感激.

c# sql web-services reporting-services

12
推荐指数
1
解决办法
2521
查看次数

人类可读的GUID

我正在写一个小型系统,允许我通过在我们的网站上生成可兑换MP3的优惠券来销售乐队的音乐.

优惠券需要用户输入的代码.代码需要具备以下特性:

  1. 在长度和内容方面有一定程度的人类可读性,以防止用户沮丧和数据输入错误.
  2. 给出一个优惠券代码,而不是猜测另一个优惠券代码.

如果我使用GUID,我关注第1点.如果我使用递增整数,我关注第2点.中间必须有一些快乐的媒介,对吧?我想也许这项工作已经完成,并且有一个理想的解决方案等着我.如果没有这个,我想我会使用随机的字母数字字符串,或者只是字母(为了清楚起见,不包括I和O),并且应用程序块IP地址失败了X次,这表明可能的蛮力攻击.如果我使用它,字符串有多长,X的值有多大,为什么?

谢谢你的帮助!


更新:我没有完全明确这个方法:我将生成用于打印的凭证代码列表,然后在演出后输入"已售出"代码.因此,我认为像校验和这样的元素不像在不使用验证服务器的软件密钥中那样.

language-agnostic

11
推荐指数
5
解决办法
3340
查看次数

我如何获得 man 命令?

我第一次安装了适用于 Linux 的 Windows 子系统,并从 Windows 应用商店下载了 Debian 发行版。

我尝试做的第一件事是使用“mv”命令。第二件事是运行“man mv”,因为我不记得如何使用它。但我收到了错误:

-bash: man: command not found
Run Code Online (Sandbox Code Playgroud)

看起来像我想的是被称为手册页包。但我无法安装:

sudo apt-get install manpages
[sudo] password for pi:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package manpages is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or is only available from another source

E: Package 'manpages' has no installation candidate
Run Code Online (Sandbox Code Playgroud)

如何启动并运行 man 命令?

windows-subsystem-for-linux

9
推荐指数
2
解决办法
5299
查看次数

TFS在工作项转换上执行自定义代码

我希望TFS 2010在特定的工作流转换发生时运行一些自定义代码.那可能吗?

我找到了有关自定义操作的文档,这些操作似乎是可以自动触发工作项转换的操作(我是否正确?)我还找到了与Builds相关的自定义活动.但没有任何东西符合这一特殊要求 - 我错过了什么吗?

谢谢你的帮助!

tfs workitem tfs2010

8
推荐指数
1
解决办法
7398
查看次数

用于WorkItemAttribute?

我注意到Visual Studio测试中有一个属性Microsoft.VisualStudio.TestTools.UnitTesting.WorkItemAttribute(我正在使用VS 2010 Premium和TFS 2010的工作项.)

使用工作项编号标记测试方法听起来很方便,但它实际上做了什么吗?我不知道是否有任何工具支持.我这样设置一个:

[WorkItem(25788)]
[TestMethod]
public void TestSomethingSpecificToABug()
{
    ...
Run Code Online (Sandbox Code Playgroud)

但没有魔法 - 我想也许测试结果窗口中的测试上下文菜单可能提供打开工作项,或者团队资源管理器可能具有搜索测试的功能.在MSDN文档是没有帮助的.这个属性有什么用?

testing tfs visual-studio tfs2010

7
推荐指数
1
解决办法
2934
查看次数