小编Tad*_*eck的帖子

如何使用CSV MIME类型?

在我正在处理的Web应用程序中,用户可以单击指向CSV文件的链接.没有为mime类型设置标头,因此浏览器只是将其呈现为文本.我想将此文件作为.csv文件发送,因此用户可以使用calc,excel,gnumeric等直接打开它.

header('Content-Type: text/csv');
echo "cell 1, cell 2";
Run Code Online (Sandbox Code Playgroud)

此代码在我的计算机上按预期工作(不是它一直是这样吗?)但在另一台计算机上不起作用.

我的浏览器是每晚构建的FF 3.0.1(在Linux上).它不起作用的浏览器是IE 7和FF 3.0(在Windows上)

有没有我不知道的怪癖?

php csv mime http-headers

123
推荐指数
3
解决办法
19万
查看次数

Python中的Google身份验证器实现

我正在尝试使用可以使用Google身份验证器应用程序生成的一次性密码.

Google身份验证器的功能

基本上,Google身份验证器实现了两种类型的密码:

  • HOTP - 基于HMAC的一次性密码,这意味着密码随每次呼叫而改变,符合RFC4226,并且
  • TOTP - 基于时间的一次性密码,每30秒更改一次(据我所知).

Google身份验证器也可在此处以开源形式提供:code.google.com/p/google-authenticator

目前的代码

我一直在寻找能够生成HOTP和TOTP密码的现有解决方案,但没有找到太多.我的代码是负责生成HOTP的以下代码段:

import hmac, base64, struct, hashlib, time

def get_token(secret, digest_mode=hashlib.sha1, intervals_no=None):
    if intervals_no == None:
        intervals_no = int(time.time()) // 30
    key = base64.b32decode(secret)
    msg = struct.pack(">Q", intervals_no)
    h = hmac.new(key, msg, digest_mode).digest()
    o = ord(h[19]) & 15
    h = (struct.unpack(">I", h[o:o+4])[0] & 0x7fffffff) % 1000000
    return h
Run Code Online (Sandbox Code Playgroud)

我面临的问题是,我使用上述代码生成的密码与使用适用于Android的Google身份验证器应用生成的密码不同.即使我尝试了多个intervals_no值(恰好是前10000个,开头intervals_no = 0),与secretGA应用程序中提供的密钥相等.

我有问题

我的问题是:

  1. 我究竟做错了什么?
  2. 如何在Python中生成HOTP和/或TOTP?
  3. 是否有任何现有的Python库?

总结一下:请给我任何有助于我在Python代码中实现Google身份验证器身份验证的线索.

python security authentication one-time-password google-authenticator

99
推荐指数
2
解决办法
4万
查看次数

运行Django的./manage.py syncdb时自动创建管理员用户

我的项目处于早期开发阶段.我经常删除数据库并运行manage.py syncdb以从头开始设置我的应用程序.

不幸的是,这总是突然出现:

You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): 
Run Code Online (Sandbox Code Playgroud)

然后,您提供了用户名,有效的电子邮件地址和密码.这很乏味.我厌倦了打字test\nx@x.com\ntest\ntest\n.

如何在运行时自动跳过此步骤并以编程方式创建用户manage.py syncdb

django automation django-syncdb

81
推荐指数
7
解决办法
3万
查看次数

如何编写尽可能与Python 3.x兼容的Python 2.x?

有许多方法可以在Python 2.x中包含Python 3.x功能,因此Python 2.x脚本的代码将来可以很容易地转换为Python 3.x. 其中一个例子是用函数替换print语句print():

>>> from __future__ import print_function
Run Code Online (Sandbox Code Playgroud)

是否有任何列表或资源可以提供一些想法如何使Python 2.x代码尽可能接近Python 3.x?

您能举例说明其他有用的导入或定义可以使Python 2.x的外观和行为更像Python 3.x吗?

让我们假设我们拥有最新的Python 2.x(目前为2.7.2,我相信).

python compatibility python-2.x python-3.x

35
推荐指数
4
解决办法
7110
查看次数

django-object-permissions vs django-guardian vs django-authority

我已经为Django 1.2+找到了3个行级权限解决方案

有人可以告诉是否有任何推荐比其他人更多,他们的主要区别是什么,等等?

django django-apps django-authentication django-permissions

33
推荐指数
2
解决办法
9885
查看次数

Django:创建索引:非唯一,多列

鉴于以下模型,我想索引字段(序列,库存)

class QuoteModel(models.Model):  
    quotedate =  models.DateField()  
    high = models.FloatField() #(9,2) DEFAULT NULL,  
    low  = models.FloatField() #(9,2) DEFAULT NULL,  
    close  = models.FloatField() #(9,2) DEFAULT NULL,  
    closeadj  = models.FloatField() #(9,2) DEFAULT NULL,  
    volume  = models.IntegerField() #(9,2) DEFAULT NULL,  
    stock  = models.IntegerField(db_index=True) #(9,2) DEFAULT NULL,  
    open  = models.FloatField() #(9,2) DEFAULT NULL,  
    sequence = models.IntegerField() #(9,2) DEFAULT NULL,  
Run Code Online (Sandbox Code Playgroud)

这个索引应该是非唯一的 - 在mysql中它应该是这样的:

create index ndx_1 on model_quotemodel(sequence,stock);
Run Code Online (Sandbox Code Playgroud)

我所知道的唯一的Django解决方法是创建一个"sql"文件,该文件将在创建表时由django执行.所以,我创建了一个包含以下查询的"stockmodel.sql"(与上面相同:)

create index ndx_1 on model_quotemodel(sequence,stock);
Run Code Online (Sandbox Code Playgroud)

这样做有"更干净"的方法吗?

mysql django indexing

28
推荐指数
7
解决办法
2万
查看次数

如何为电子邮件发送服务设计REST API?

如何使用POST,GET,PUT,DELETE为电子邮件发送服务设计REST API?

send: POST - /email
retrieve: GET - /email/{id}
delete: DELETE - /email/{id}
Run Code Online (Sandbox Code Playgroud)

它是设计REST API的正确方法吗?我觉得将POST映射到动作"发送"是不直观的.

rest

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

22
推荐指数
2
解决办法
7545
查看次数

Python中的高效memoization

我有一些任务需要解决,目前最重要的部分是使脚本尽可能节省时间.我试图优化的一个要素是其中一个函数中的memoization.

所以我的问题是:以下3-4种方法中哪一种是在Python中实现memoization的最有效/最快的方法?

我只提供了代码作为示例 - 如果其中一种方法更有效,但在我提到的情况下,请分享您所知道的内容.

解决方案1 ​​ - 使用外部范围的可变变量

此解决方案通常显示为示例memoization,但我不确定它的效率如何.我听说使用全局变量(在这种情况下,它是从外部变量而不是全局变量)效率较低.

def main():
    memo = {}
    def power_div(n):
        try:
            return memo[n]
        except (KeyError):
            memo[n] = (n ** 2) % 4  # example expression, should not matter
            return memo[n]
    # extensive usage of power_div() here
Run Code Online (Sandbox Code Playgroud)

解决方案2 - 使用默认的可变参数

我发现在过去使用默认的可变参数从外部作用域传递变量,当Python首先在本地作用域中搜索变量,然后在全局作用域中,跳过非局部作用域(在本例中为范围内)功能main()).因为默认参数仅在定义函数时初始化,并且只能在内部函数内部访问,因此它可能更有效吗?

def main():
    def power_div(n, memo={}):
        try:
            return memo[n]
        except (KeyError):
            memo[n] = (n ** 2) % 4  # example expression, should not matter
            return memo[n]
    # extensive usage of power_div() …
Run Code Online (Sandbox Code Playgroud)

python performance memoization static-variables argument-passing

17
推荐指数
1
解决办法
2608
查看次数

如何在php中创建循环模板

我们可以在C++中定义循环模板,以缩短编码:

#define fo(a,b,c) for( a = ( b ); a < ( c ); ++ a )
Run Code Online (Sandbox Code Playgroud)

有没有办法在PHP中做同样的事情?

php c++

16
推荐指数
2
解决办法
5780
查看次数