小编Loï*_*oix的帖子

"++"和" - "运算符已弃用Xcode 7.3

我正在看Xcode 7.3笔记,我注意到了这个问题.

++和 - 运算符已被弃用

有人可以解释为什么它被弃用了吗?我是对的,在Xcode的新版本中,你现在要使用而不是++这个x += 1;

例:

for var index = 0; index < 3; index += 1 {
    print("index is \(index)")
}
Run Code Online (Sandbox Code Playgroud)

警告的屏幕截图

increment decrement swift swift2 swift3

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

xml.LoadData - 根级别的数据无效.第1行,第1位

我正在尝试解析WiX安装程序中的一些XML.XML将是从Web服务器返回的所有错误的对象.我使用以下代码在问题标题中收到错误:

XmlDocument xml = new XmlDocument();
try
{
    xml.LoadXml(myString);
}
catch (Exception ex)
{
    System.IO.File.WriteAllText(@"C:\text.txt", myString + "\r\n\r\n" + ex.Message);
    throw ex;
}
Run Code Online (Sandbox Code Playgroud)

myString是这个(如输出中所示text.txt)

<?xml version="1.0" encoding="utf-8"?>
<Errors></Errors>
Run Code Online (Sandbox Code Playgroud)

text.txt 看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Errors></Errors>

Data at the root level is invalid. Line 1, position 1.
Run Code Online (Sandbox Code Playgroud)

我需要解析这个XML,所以我可以看到我是否有任何错误.

编辑

这个问题不是标记的重复.在那个问题中,提出问题的人正在使用LoadXml解析XML文件.我正在解析一个字符串,这是正确使用的LoadXml

c# xml wix xml-parsing

66
推荐指数
4
解决办法
17万
查看次数

在sed中插入换行符(Mac OS X)

如何在sed的替换部分插入换行符?

此代码无效:

sed "s/\(1234\)/\n\1/g" input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)

其中input.txt是:

test1234foo123bar1234
Run Code Online (Sandbox Code Playgroud)

和output.txt应该是:

test
1234foo123bar
1234
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个:

testn1234foo123barn1234
Run Code Online (Sandbox Code Playgroud)

注意:

这个问题具体是关于"sed"的Mac OS X版本,社区已经注意到它的行为与Linux版本不同.

regex macos bash sed

40
推荐指数
5
解决办法
5万
查看次数

如何更改命名范围范围

当我通过名称管理器创建命名范围时,我可以选择指定工作簿或[worksheet name]范围.但如果那时想要改变范围,那么下拉列表就会变灰.有没有办法,在名称管理器中,或者,优选地,VBA可以更改现有命名范围的范围?

例如:

  • testName'sheet1'!A1:B2范围工作簿.我该如何改变呢?
  • testName是指'sheet1'!A1:B2'sheet1'范围?

excel vba excel-vba

18
推荐指数
4
解决办法
12万
查看次数

Chrome缓存CSS但不在CSS文件中加载图片

我们在工作中遇到一个奇怪的问题,只发生在chrome中.看起来css文件正在缓存,并且不会重新下载此文件的内容.

问题是当使用新会话例如"私人会话"时,不会显示图像"mainSprite.png".

经过一些测试后,我认为如果用户未经过身份验证,问题与我们在开始时进行重定向有关.根据我的理解,它可能无法完成在css文件中链接的精灵的下载.它会尽快缓存无效对象作为重定向开始,然后在下面的页面时,将无法显示正确的图像,因为它的缓存有些不妥.

奇怪的是它实际上在某个时刻完全加载了图像.但它看起来并没有在内存中刷新它......

在第一次加载开始重定向并正确显示图像之前,我做了一秒的超时.这是一个快速修复,我不能指望每台计算机在1秒钟内加载css中包含的每个图像.

编辑

据我所知,它看起来真的像竞争条件.我改变了加载顺序.我们使用require.js.我没有在css之后加载js,而是在之前启动js加载.现在,我的本地服务器上的图像正确加载.

如果有人有兴趣研究它:

http://api.checklist.com

编辑2

当图像不可见时,打开新标签会出现同样的问题.关闭浏览器并重新打开它将在首次加载时工作,图像不会被下载,而是从Cache加载,这意味着在关闭浏览器之前,图像确实已下载.

css caching google-chrome

18
推荐指数
1
解决办法
4213
查看次数

android屏幕大小,值-v11,值-v14

我在values文件夹中找到了几个文件res夹:

xlarge screens are at least 960dp x 720dp
large screens are at least 640dp x 480dp
normal screens are at least 470dp x 320dp
small screens are at least 426dp x 320dp  
res/values-normal/ ==    res/values-v11/ ???
res/values-xlarge/ ==   res/values-v14/  ???
Run Code Online (Sandbox Code Playgroud)

我对吗?或者我需要创建一个名为另一个文件夹values-xlarge,values-normal

android screen-size android-resources

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

在python中缓慢递归

我知道这个问题已得到很好的讨论但是我遇到了一个案例,我并不真正理解递归方法比使用"reduce,lambda,xrange"的方法"慢".

def factorial2(x, rest=1):
    if x <= 1:
        return rest
    else:
        return factorial2(x-1, rest*x)


def factorial3(x):
    if x <= 1:
        return 1
    return reduce(lambda a, b: a*b, xrange(1, x+1))
Run Code Online (Sandbox Code Playgroud)

我知道python不会优化尾递归,所以问题不在于它.根据我的理解,生成器仍然应该使用+1运算符生成n个数字.所以从技术上讲,fact(n)应该n像递归一样添加一些次数.该lambdareduce将被称为n时间就像递归方法......所以,既然我们没有尾巴调用优化在这两个情况下,堆栈将创建/销毁和返回n时间.并且if生成器中的a应检查何时引发StopIteration异常.

这让我想知道为什么递归方法仍然比另一个慢,因为递归方法使用简单的算法而不使用生成器.

在一个测试中,我用递归方法代替rest*x,x花费的时间与使用的方法相当reduce.

这是我的事实时间(400),1000次

factorial3:1.22370505333

factorial2:1.79896998405

编辑:

从制作方法开始1,以n不利于无论是不是n1.所以不是开销-1.

此外,我们可以更快地使递归方法.我尝试了多个像全局变量这样的东西,我可以改变...使用可变上下文,将变量放在我可以像数组一样修改的单元格中,并保持不带参数的递归方法.将用于递归的方法作为参数发送,这样我们就不必在我们的范围内"取消引用"它了??!但是,没有什么能让它变得更快.

我会指出我有一个事实版本,使用比这两种方法都快得多的forloop,所以有明显的改进空间,但我不希望任何比forloop更快的东西.

python optimization recursion

13
推荐指数
1
解决办法
1412
查看次数

解析bbcode的最佳方法

我想在php网站上使用bbcode过滤器.(我正在使用cakephp,它将是一个bbcode助手)我有一些要求.

Bbcodes可以嵌套.所以这样的事情是有效的.

[block]  
    [block]  
    [/block]  
    [block]  
        [block]  
        [/block]  
    [/block]  
[/block]  
Run Code Online (Sandbox Code Playgroud)

Bbcodes可以有0个或更多参数.

例:

[video: url="url", width="500", height="500"]Title[/video]
Run Code Online (Sandbox Code Playgroud)

Bbcodes可能有多种行为.

让我们说,[url]text[/url]将被转换为[url:url="text"]text[/url] 或视频bbcode将能够在youtube,dailymotion ....

我认为它涵盖了我的大部分需求.我总是用正则表达式做点什么.但我最大的问题是匹配参数.事实上,我得到嵌套的bbcode工作和bbcode 0参数.但是,当我为参数添加正则表达式匹配时,它与嵌套的bbcode无法正确匹配.

"\[($tag)(=.*)\"\](.*)\[\/\1\]" //它不是.*但是非gready matcher

我现在没有完整的正则表达式,但我有一些看起来像那样的东西(上图).

那么有没有办法有效地匹配bbcode与正则表达式或其他东西.我唯一能想到的是使用访问者模式并以这种方式将我的文本与每个可能的标签分开,我可以对文本解析有更多的控制权,我可以验证我的文档,所以如果输入文本没有没有有效的bbcode.在保存任何内容之前,我可以通过错误通知用户.

我会使用sablecc来创建我的文本解析器. http://sablecc.org/

有什么好主意吗?或任何可能导致高效灵活的bbcode解析器的东西?

谢谢,抱歉我的英文不好......

php cakephp sablecc bbcode

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

没有遍历的金字塔ACL

我真的不知道ACL是如何工作的.我知道这很酷,可以节省我很多时间和痛苦.但目前我有点失落.金字塔的所有示例都使用遍历.我专门使用URL Dispatch.我不确定如何构建一个资源树结构.

这是一个代码示例:

class QuestionFactory(object):

    def __init__(self, request):
        self.__acl__ = default[:]
        self.uid = authenticated_userid(request)

        self.qid = request.matchdict.get('id')
        if self.qid:
            self.question = request.db.questions.find_one({'_id': ObjectId(self.qid)})
            if str(self.question.get('owner')) == self.uid:
                self.__acl__.append((Allow, userid, 'view'))     
Run Code Online (Sandbox Code Playgroud)

问题是,它有效.但我必须为每种类型的资源定义一个新工厂.我不知道我应该知道我试图通过URL Dispatch和Factory访问哪个资源.我会看到类似的东西

/accounts/{account}   //Owners only but viewable by anyone 
/messages/{message}   //Owners only
/configs/{config}     //Admin only
/pages/{page}         //Admins only but viewable by anyone
Run Code Online (Sandbox Code Playgroud)

那说我在这里有这样的结构

  Root -\
         +-- account
         +-- message
         +-- config
         +-- page
Run Code Online (Sandbox Code Playgroud)

这些工厂中的每一个都有它自己特殊的acl.另一件事是/ accounts是主页面.它没有id或任何东西.另外/ accounts/new也是一个特例.它不是id,而是创建新项目的视图.

我正在使用具有GET/PUT/DELETE/POST要求的宁静风格.我不太确定我应该如何自动将url与资源和正确的acl匹配.如果我在我的根中定义一个像上面这样的特殊工厂就没有问题.

编辑

除了一些事情,我确实得到了它.我终于想到了解遍历的目的是什么.例如,我们有这个网址:/ comments/9494f0eda/new,/ comments/{comment}/new

我们可以在我们的资源树或甚至3个节点中使用Node.

首先检查RootFactory,然后根据我们的遍历进行检查.它将获取RootFactory的comments属性,然后是Comment Factory的"comment"和CommentFactory的"new"或者Object本身的"new"

我不像迈克尔的例子那样使用工厂作为字典

它看起来非常像:

class RessourceFactory(object):
    def __init__(self, …
Run Code Online (Sandbox Code Playgroud)

python acl routes pyramid

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

使用gitlab API获取gitlab-ci标记

从API中不清楚如何获取可用于克隆http存储库的令牌.

从这里的文档:

http://doc.gitlab.com/ee/ci/api/README.html

应该可以获取此网址:

http://gitlab.com/ci/api/v1/projects?private_token=QVy1PB7sTxfy4pqfZM1U&url=http://demo.gitlab.com/
Run Code Online (Sandbox Code Playgroud)

我不确定url参数的来源,但即使只使用我的私人令牌,它也会收到404错误页面.

我尝试使用ci子域名,但它只是将我重定向到gitlab.com.

那就是说,我会解释一下我需要它的原因.我有一个可以有多个项目的服务器.每个项目都将包含一个私有/公共存储库列表,每个项目都必须克隆/拉动,以及任何定期.与github不同,gitlab不提供站点范围内的oauth2令牌,而是为每个项目提供CI令牌.我可以确保用户输入每个项目的令牌,但这比输入私人令牌更复杂.

另一方面,我可以为每个用户生成SSH密钥并将公钥添加到他们的帐户,这样就可以使用ssh而不是http来获取/克隆.但是,除了获取令牌并使用基本身份验证网址进行克隆之外,我的工作还有点多

git clone https://gitlab-ci-token:token@gitlab.com/project.git
Run Code Online (Sandbox Code Playgroud)

gitlab gitlab-ci

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