小编Mar*_*cin的帖子

原型与课程

Steve Yegge最近发布了一篇关于他称之为通用设计模式的有趣博客文章.在那里,他详细介绍了使用原型作为建模工具,而不是类.我喜欢与继承相比引入更少耦合的方式.但是,通过使用其他类而不是继承来实现类,这也可以通过类获得.是否有其他人有使用原型的成功故事,并且可以帮助解释使用原型与类相比有何优势.我想这归结为静态建模与动态建模,但更多的例子将非常受欢迎.

javascript oop prototype

10
推荐指数
1
解决办法
2331
查看次数

python字节串编码和解码

我试图将包含非ascii字符的传入字节字符串转换为有效的utf-8字符串,以便我可以转储为json.

b = '\x80'
u8 = b.encode('utf-8')
j = json.dumps(u8)
Run Code Online (Sandbox Code Playgroud)

我希望j为'\ xc2\x80',但我得到:

UnicodeDecodeError: 'ascii' codec can't decode byte 0x80 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

在我的情况下,'b'来自mysql通过谷歌协议缓冲区,并填写了一些blob数据.

有任何想法吗?

编辑:我有一个以太网帧作为blob存储在mysql表中(请大家,请保持主题,不要讨论为什么表中有数据包).表格排序是utf-8,db层(sqlalchemy,non-orm)正在抓取数据并创建结构(谷歌协议缓冲区),它将blob存储为python"str".在某些情况下,我直接使用协议缓冲区,没有任何问题.在其他情况下,我需要通过json公开相同的数据.我注意到的是,当json.dumps()做了它的事情,'\ x80'可以用无效的unicode char替换(\ ufffd iirc)

python unicode json utf-8 python-unicode

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

使用PhantomJS与Selenium Webdriver和Python

我目前正在使用Selenium Webdriver在页面上进行一些验证.Webdriver由PhantomJS驱动.我知道在PhantomJS中,您可以使用如下示例来收听网络:(来自https://github.com/ariya/phantomjs/wiki/Network-Monitoring).

var page = require('webpage').create();
page.onResourceRequested = function (request) {
    console.log('Request ' + JSON.stringify(request, undefined, 4));
};
page.onResourceReceived = function (response) {
    console.log('Receive ' + JSON.stringify(response, undefined, 4));
};
page.open(url);
Run Code Online (Sandbox Code Playgroud)

如何在Webdriver中实现此功能?我可以将函数绑定到DesiredCapabilities吗?

javascript selenium webdriver phantomjs

10
推荐指数
1
解决办法
2421
查看次数

Django admin:如何格式化只读字段?

我有一个模型,Director有两个DateFields和两个子类(下面的代码).我正在尝试为每个Director创建一个管理页面,它显示相应的子类实例,而不是Director实例; 这部分大部分都很简单(我为每个子类创建一个内联,给主模型管理器一个表格,所有字段都被排除在外,并且主要的ModelAdmin请求来自内联的请求表单集,这些表单集有相应的实例 - 代码;有一个未解决的问题用这种方法,我在下面注意到,但不是这个问题的焦点).

我遇到的问题是我想按下显示给用户的值,其中一个显示在只读字段中,其中一个不显示.处理是我想将魔术值(date(1,1,1))更改为字符串"On incorporation".

readonly字段中的日期不会以非常友好的格式呈现,我希望减少对javascript的不必要依赖,所以我更喜欢服务器端解决方案.

下面的代码显示了我想要的表单,除了日期值根本没有按摩,保存时,即使没有错误,也有一个虚假的"请更正下面的错误"消息,并保存所有字段正确.

我的问题是:我如何拦截要在页面上呈现的值,包括只读字段和表单字段,并更改它们以显示我选择的字符串?

模型(到目前为止):

class Director(models.Model, Specializable):
    date_of_appointment = models.DateField()
    date_ceased_to_act = models.DateField(blank=True,null=True)

class DirectorsIndividual(Director):
     pass

class DirectorsCorporate(Director):
     pass
Run Code Online (Sandbox Code Playgroud)

管理员代码:

class DirectorAdmin(EnhancedAdmin):

    fields = ()

##    def formfield_for_dbfield(self, db_field, **kwargs):
##        return None

    def queryset(self, request):
        """ Directors for all companies which are incorporated by the current user's organisation """
        individual = Individual.for_user(request.user)
        return Director.objects.filter(company__incorporation_ticket__ordered_by__in = Organisation.all_organisations_for_which_individual_authorised_to_incorporate(individual))

    class form(forms.ModelForm):
        # have this return no html - …
Run Code Online (Sandbox Code Playgroud)

python django django-forms django-admin

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

Python中的Pointfree函数组合

我有一些谓词,例如:

is_divisible_by_13 = lambda i: i % 13 == 0
is_palindrome = lambda x: str(x) == str(x)[::-1]
Run Code Online (Sandbox Code Playgroud)

并希望在逻辑上将它们组合在一起,如:

filter(lambda x: is_divisible_by_13(x) and is_palindrome(x), range(1000,10000))
Run Code Online (Sandbox Code Playgroud)

现在的问题是:这种组合可以用无样式编写,例如:

filter(is_divisible_by_13 and is_palindrome, range(1000,10000))
Run Code Online (Sandbox Code Playgroud)

这当然不具有期望的效果,因为λ函数的真值是Trueand并且or是短路运算符.我想出的最接近的事情是定义一个类P,它是一个简单的谓词容器,它实现__call__()并拥有方法and_()or_()组合谓词.定义P如下:

import copy

class P(object):
    def __init__(self, predicate):
        self.pred = predicate

    def __call__(self, obj):
        return self.pred(obj)

    def __copy_pred(self):
        return copy.copy(self.pred)

    def and_(self, predicate):
        pred = self.__copy_pred()
        self.pred = lambda x: pred(x) and predicate(x) …
Run Code Online (Sandbox Code Playgroud)

python predicate pointfree function-composition

9
推荐指数
1
解决办法
2514
查看次数

base64编码python 2.7中的unicode字符串

我已经使用从web服务检索的unicode字符串requests模块,它包含一个二进制文件的字节(PCL,因为它发生).其中一个字节的值为248,尝试对其进行base64编码会导致以下错误:

In [68]: base64.b64encode(response_dict['content']+'\n')
---------------------------------------------------------------------------
UnicodeEncodeError                        Traceback (most recent call last)
C:\...\<ipython-input-68-8c1f1913eb52> in <module>()
----> 1 base64.b64encode(response_dict['content']+'\n')

C:\Python27\Lib\base64.pyc in b64encode(s, altchars)
     51     """
     52     # Strip off the trailing newline
---> 53     encoded = binascii.b2a_base64(s)[:-1]
     54     if altchars is not None:
     55         return _translate(encoded, {'+': altchars[0], '/': altchars[1]})

UnicodeEncodeError: 'ascii' codec can't encode character u'\xf8' in position 272: ordinal not in range(128)

In [69]: response_dict['content'].encode('base64')
---------------------------------------------------------------------------
UnicodeEncodeError                        Traceback (most recent call last)
C:\...\<ipython-input-69-7fd349f35f04> in <module>() …
Run Code Online (Sandbox Code Playgroud)

python base64 character-encoding unicode-string python-unicode

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

Amber Smalltalk - 创建单个.js文件以进行部署

我已经看过这个话题了几次,但我认为我没有看到任何确定的解决方案.

我已经尝试了将所有我的Foo.deploy.js,Bar.deploy.js组合成单个.js文件的路由,然后将其包含在loadAmber()调用中.这/似乎/工作得相当好,但大部分下载大小仍然来自Amber内部.

在我的申请中,规模最大的罪犯是:

  • 200K - jQuery UI
  • 95K - 内核集合
  • 90K - jQuery
  • 87K - 内核对象
  • 50K - 画布
  • 40K - MyApp
  • 20K - 内核类

我不能对jQuery UI的大小做太多,但我可以做很多关于Amber核心的大小,以及获取它们所需的HTTP请求的数量.唯一的问题是我无法弄清楚如何告诉Amber不要自动获取Kernel-Objects.deploy.js等.

有没有人设法将他们的整个Amber javascript成功打包成一个.js文件?

  • R.泰勒克罗伊

代码:http://github.com/rtyler Chatter:http://twitter.com/agentdero

deployment smalltalk amber-smalltalk

9
推荐指数
1
解决办法
947
查看次数

实现不同但相似的结构/功能集而无需复制粘贴

我正在为C(这里)实现一组常见但又不那么简单(或容易出错)的数据结构,并且只是提出了让我思考的想法.

简而言之,问题是,实现两个使用类似算法但具有不同接口的结构的最佳方法是什么,而无需复制粘贴/重写算法?最好的,我的意思是最可维护和可调试.

我认为很明显为什么你不想要同一算法的两个副本.

动机

假设你有一组结构(称之为map),带有一组相关的函数(map_*()).由于地图需要将任何东西映射到任何东西,我们通常会使用a void *keyvoid *data.然而,认为地图上的intint.在这种情况下,您需要将所有密钥和数据存储在另一个阵列中并将其地址提供给map,这不太方便.

现在想象一下,如果有一个类似的结构(称之为mapc,C为"副本")期间初始化需要sizeof(your_key_type)sizeof(your_data_type)并给予void *keyvoid *data上插入,它将使用memcpy的密钥和数据复制在地图上,而不是仅仅维持指针.用法示例:

int i;
mapc m;
mapc_init(&m, sizeof(int), sizeof(int));
for (i = 0; i < n; ++i)
{
    int j = rand();  /* whatever */
    mapc_insert(&m, &i, &j);
}
Run Code Online (Sandbox Code Playgroud)

这是非常好的,因为我不需要保留另一个is和js 数组.

我的想法

在上面的例子,mapmapc有非常密切的关系.如果你想想看,map和 …

c interface abstract-data-type data-structures

9
推荐指数
1
解决办法
357
查看次数

如何使用python取-1的平方根?

当我取-1的平方根时,它给出了一个错误:

sqrt中遇到无效值

我该如何解决这个问题?

/////////
arr=sqrt(-1)
print(arr)
OUTPUT
Run Code Online (Sandbox Code Playgroud)

python numpy

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

获取当前的 python 模块对象(按名称或其他方式)

如果我想获取当前模块,例如重新加载它,我会这样做:

import sys
sys.modules[__name__]
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点(例如不涉及__name__)?在这种情况下,更好意味着更惯用、更便携、更健壮,或者更多......我们通常在软件中希望的任何其他东西。

我使用 python 2,但 python 3 的答案无疑对其他人有用。

python python-2.7

9
推荐指数
1
解决办法
6560
查看次数