小编dav*_*ode的帖子

NSString唯一文件路径,以避免名称冲突

是否有一种简单的方法来获取给定的文件路径并对其进行修改以避免名称冲突?就像是:

[StringUtils stringToAvoidNameCollisionForPath:path];
Run Code Online (Sandbox Code Playgroud)

对于给定的类型路径:/foo/bar/file.png,将返回/foo/bar/file-1.png,稍后它将增加"-1",类似于Safari对下载文件所做的操作.

更新:

我按照Ash Furrow的建议,我发布了我的实现作为答案:)

cocoa-touch objective-c nsstring

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

具有浮点数的字符串格式的Python精度

我不明白为什么,通过格式化包含浮点值的字符串,不遵守最后一个的精度.即:

'%f' % 38.2551994324
Run Code Online (Sandbox Code Playgroud)

收益:

'38.255199'
Run Code Online (Sandbox Code Playgroud)

(4个标志丢失了!)

目前我解决了指定:

'%.10f' % 38.2551994324
Run Code Online (Sandbox Code Playgroud)

按预期返回'38 .2551994324'但我应该手动强制手动多少个十进制数?有没有办法简单告诉python保留所有这些?!(例如,如果我不知道我的号码有多少小数,我该怎么办?)

python string floating-point

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

如何在supervisord命令中使用环境变量

如何在supervisord命令中使用环境变量?我试过了:

flower --broker=$MYVAR

但它不起作用(变量没有扩展),所以我尝试使用内联python脚本:

command=python -c "import os;os.system('flower --broker={0}'.format(os.environ['MYVAR']))"
Run Code Online (Sandbox Code Playgroud)

上面的命令工作,但后来我无法使用supervisorctl stop... 终止进程.我被"停止"回来但是进程实际上仍在运行!我怎样才能解决我的问题?(我不想把该参数放入内联)

python supervisord flower

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

Django REST框架:在ModelViewSet中保存相关模型

我正试图弄清楚如何使用Django REST框架保存相关模型.在我的应用程序中,我有一个模型Recipe与2相关模型:RecipeIngredientRecipeStep.一个Recipe对象必须至少有3个相关的RecipeIngredient和3个RecipeStep.在引入REST框架之前,我使用了一个CreateView带有两个formset 的Django ,并且保存过程如下(遵循代码form_valid()):

def save_formsets(self, recipe):
    for f in self.get_formsets():
        f.instance = recipe
        f.save()

def save(self, form):
    with transaction.atomic():
        recipe = form.save()
        self.save_formsets(recipe)
    return recipe

def formsets_are_valid(self):
        return all(f.is_valid() for f in self.get_formsets())

def form_valid(self, form):
    try:
        if self.formsets_are_valid():
            try:
                return self.create_ajax_success_response(form)
            except IntegrityError as ie:
                return self.create_ajax_error_response(form, {'IntegrityError': ie.message})
    except ValidationError as ve:
        return self.create_ajax_error_response(form, {'ValidationError': ve.message})
    return self.create_ajax_error_response(form)
Run Code Online (Sandbox Code Playgroud)

现在我有了RecipeViewSet: …

django django-forms formset django-rest-framework

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

如何使用Quartz Core绘制星星?

我正在尝试调整Apple提供的示例,以便以编程方式绘制星形,代码如下:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(context, aSize);

    for (NSUInteger i=0; i<stars; i++) 
    {

       CGContextSetFillColorWithColor(context, aColor);
       CGContextSetStrokeColorWithColor(context, aColor);

       float w = item.size.width;
       double r = w / 2;
       double theta = 2 * M_PI * (2.0 / 5.0); // 144 degrees

       CGContextMoveToPoint(context, 0, r);

       for (NSUInteger k=1; k<5; k++) 
       {
          float x = r * sin(k * theta);
          float y = r * cos(k * theta);
          CGContextAddLineToPoint(context, x, y);
       }

       CGContextClosePath(context);
       CGContextFillPath(context);
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码绘制了一个完美的星,但是1.显示颠倒2.是黑色的,没有边框.我想要实现的是在同一条线上以及给定的风格绘制许多星星.据我所知,我实际上是在同一个位置画了5次相同的路径而且我已经以某种方式垂直翻转了上下文,但经过几次测试我放弃了!(我缺乏必要的数学和几何技能:P)......你能帮我吗?

更新:

好的,多亏了CocoaFu,这是我的重构和工作绘制工具:

- (void)drawStars:(NSUInteger)count inContext:(CGContextRef)context; …
Run Code Online (Sandbox Code Playgroud)

geometry objective-c ios quartz-core

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

南迁移错误:未定义名称"UUID"

我有一个CharField字段的模型,默认值为uuid4:

f = models.CharField(default=uuid4, max_length=36, unique=True, blank=True)
Run Code Online (Sandbox Code Playgroud)

这导致以下错误:

无法为模型'm'成功创建字段'f':未定义名称'UUID'.

运行迁移命令!何我能解决这个问题吗?到目前为止我试过:

  • 在模块中为uuid定义"包装函数"(即:def getUUID())
  • 通过重写Model构造函数来设置默认值"f"

......但问题仍然存在:(

PS.我知道我可以向南方指示自定义字段,但我认为我不使用自定义字段:P

django django-south

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

使用Karma + Jasmine测试AngularJS指令的CSS问题

我正在使用Karma + Jasmine来测试我的AngularJS指令,我写了300多个测试,我非常高兴......直到我发现一个问题让我在这里因为我被卡住了:一些测试失败了,因为他们需要一个CSS应用于某些元素(我的指令中的一段代码根据此样式进行大小计算),尽管我添加了包含CSS实现的文件,但在测试期间此文件似乎被忽略.在我的karma配置中,我以这种方式添加了css文件:

files: [
     // ..
     'styles/foo.css',
     // ..
],
Run Code Online (Sandbox Code Playgroud)

上面的设置生成一个链接标签,body而不是head,所以我试图使用js"手动"注入CSS:

angular.element(document).find('head').prepend(
        '<style type="text/css">@charset "UTF-8";' +
        '/* THE STYLE I NEED FOR MY TESTS HERE */' +
        '</style>'
);
Run Code Online (Sandbox Code Playgroud)

但这种方法似乎都不起作用(我测试过并且样式标签被正确注入).我终于尝试在使用angular编译的html中添加一个样式块$compile:

var element = ng.element('<div>' +
'<style type="text/css">@charset "UTF-8";' +
            '/* THE STYLE I NEED FOR MY TESTS HERE */' +
            '</style>' +
'<my-directive></my-directive>' +
+ '</div>');
$compile(element)(scope);
Run Code Online (Sandbox Code Playgroud)

...但仍然没有幸运...我也尝试将测试运行PhantomJS切换到Chrome,但问题是相同的:样式被忽略了(它们被注入但是它们不适用于元素,实际上使用jQuery(targetElement).css('width')它返回0)...

所以,我的一个大问题:如何在业力测试中导入并成功应用样式表?:(

javascript css jasmine angularjs karma-runner

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

Google 地图 v3:使用自定义标记进行聚类

我正在尝试使用MarkerClusterer对地图上的标记进行聚类。问题是我没有使用默认标记(google.maps.Marker),而是使用从google.maps.OverlayView继承的自定义类。不幸的是,该库似乎是在假设使用基本标记的情况下开发的,实际上我得到了错误,因为我的类没有实现google.maps.Marker 中定义的方法。是否可以通过保留我的自定义标记来使用MarkerClusterer

编辑:这比我预期的要容易得多,我通过在我的自定义类中实现 2 个方法来解决:

setVisible()getPosition()

为了帮助他人,以下是我的完整界面(没有完整实现):

BFPushpin = function(config) 
{
    this.setMap(config.map);
    this.set("position", config.position);
    // other settings...
};

// my class extends google.maps.OverlayView
BFPushpin.prototype = new google.maps.OverlayView();

BFPushpin.prototype.getBounds = function() 
{
    return new google.maps.LatLngBounds(this.position, this.position); 
};

BFPushpin.prototype.getPoint = function() 
{
    var bounds = this.getBounds();
    var projection = this.getProjection();
    var sw = projection.fromLatLngToDivPixel(bounds.getSouthWest());  
        var ne = projection.fromLatLngToDivPixel(bounds.getNorthEast()); 

    return new google.maps.Point(sw.x, ne.y);
};

BFPushpin.prototype.getSuperContainer = function()
{
    var panes …
Run Code Online (Sandbox Code Playgroud)

javascript google-maps google-maps-api-3

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

Bower安装:没有可用的版本

我成功将自己的图书馆注册到了凉亭中:

bower register angular-ngkit https://github.com/daveoncode/angular-ngkit-bower.git
Run Code Online (Sandbox Code Playgroud)

我可以使用以下方法安装它:

bower install angular-ngkit
Run Code Online (Sandbox Code Playgroud)

但通过简单地使用:

bower install
Run Code Online (Sandbox Code Playgroud)

要么

bower info angular-ngkit
Run Code Online (Sandbox Code Playgroud)

我得到" 没有版本可用 "的例外,我不明白为什么,因为使用

git tag
Run Code Online (Sandbox Code Playgroud)

我可以看到我最新的(也是唯一一个)名为"0.2"的版本

我之前使用另一个git repo以"angular-ngkit"的名义发布了库,然后我取消注册它(使用curl -X DELETE repo_url)并重新注册了新的repo url并且我还执行了命令:

bower cache clean
Run Code Online (Sandbox Code Playgroud)

...为什么凉亭不能正常工作?

更新:

如果我在bower.json中定义对我的库的依赖,因为"angular-ngkit": "*"我能够bower install正常运行......但是这是不可接受的:(

javascript git angularjs bower bower-install

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

Celery:如何以可靠且可测试的方式获取队列大小

我正在失去理智,试图找到一种可靠且可测试的方法来获取给定 Celery 队列中包含的任务数量。

我已经阅读了这两个相关的讨论:

但我无法使用这些线程中描述的方法解决我的问题。

我使用 Redis 作为后端,但我希望有一个独立于后端且灵活的解决方案,特别是对于测试。

这是我目前的情况:我定义了一个EnhancedCelery类,它继承Celery并添加了几个方法,特别get_queue_size()是我正在尝试正确实现/测试的方法。

以下是我的测试用例中的代码:

celery_test_app = EnhancedCelery(__name__)

# this is needed to avoid exception for ping command
# which is automatically triggered by the worker once started
celery_test_app.loader.import_module('celery.contrib.testing.tasks')

# in memory backend
celery_test_app.conf.broker_url = 'memory://'
celery_test_app.conf.result_backend = 'cache+memory://'

# We have to setup queues manually, 
# since it seems that auto queue creation doesn't work in …
Run Code Online (Sandbox Code Playgroud)

python redis celery

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