小编Bas*_*ani的帖子

用于PHP的JSON解析器,支持注释

任何人都可以建议一个JSON解析器允许任何类型的注释,使用PHP绑定 - 需要严重的配置文件的评论,但json_decode不支持它们.

(我知道:1.其他格式如YAML,2.评论不属于标准的一部分)

更新:

我们为什么不使用:

  • YAML:基准测试显示速度较慢 - 我们可能希望通过网络发送数据 - 不确定YAML是否最适合.

  • XML:太冗长 - 简单的人工编辑是必需的.而且不需要XML的扩展功能.

  • INI:数据中存在可变深度的层次结构和嵌套.我们需要一种无处不在的格式,因为数据可能与应用程序一起分发,也可能与其他语言的应用程序一起使用.

  • 预处理:数据可以由用户提供和共享,在向应用添加数据之前很难强制要求预处理.

php json comments

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

ICU资源包是否适用于邮件转换资源

我理解ICU的本地化部分 - 日期,时间和货币格式,整理等.当涉及到消息翻译时,我看到人们说ICU不提供消息翻译功能 - 例如检查这个SOF问题.

但是,在检查ICU文档时,我们发现它提供了资源包,文档似乎暗示将它们用于消息转换:

PHP intl文档中,例如:

本地化软件产品通常需要根据当前区域设置定制的数据集,例如:消息,标签,格式化模式.ICU资源机制允许定义应用程序可以在区域设置的基础上加载的资源集,同时以统一的与区域无关的方式访问它们.

此处的文档:http://userguide.icu-project.org/locale/resources 描述了与键值存储类似的功能,文本源可以编译为二进制格式.

我的问题是ICU资源包(包括访问功能和存储格式)是用于 - 或者它是其目的的一部分 - 用于消息转换 - 例如gettext和.po文件.如果是这样,是否有任何资源或教程讨论这种用法.

或者重新措辞:在其设计目标中,ICU是否意味着与单独的消息转换工具结合使用,或者它是否努力自己提供这样的功能,或者两种选择都是可能的.

php localization internationalization icu

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

在'Beyond Compare的3向合并中控制手动对齐

在'Beyond Compare'中进行3向合并时,由于代码相似性,我们可能会出现以下错位(X是已删除的代码段,只显示了两个文件):

/*                         XXXXXXXXXXXXXXXXX 
somefunc()                 somefunc()   <---2
{                          {
body                       body
...                        ... 
}                          }
*/                         XXXXXXXXXXXXXXXXX 
somefunc()   <---1         XXXXXXXXXXXXXXXXX
{                          XXXXXXXXXXXXXXXXX
modified body              XXXXXXXXXXXXXXXXX  
...                        XXXXXXXXXXXXXXXXX
}                          XXXXXXXXXXXXXXXXX
...next segment            ...next segment
Run Code Online (Sandbox Code Playgroud)

所需的对齐方式如下:

/*                         XXXXXXXXXXXXXXXXX 
somefunc()                 XXXXXXXXXXXXXXXXX  
{                          XXXXXXXXXXXXXXXXX
body                       XXXXXXXXXXXXXXXXX
...                        XXXXXXXXXXXXXXXXX
}                          XXXXXXXXXXXXXXXXX
*/                         XXXXXXXXXXXXXXXXX 
somefunc()                 somefunc()  
{                          {           
modified body              body
...                        ...    
}                          }           
...next segment            ...next segment
Run Code Online (Sandbox Code Playgroud)

所以我在position-2和position-1之间进行手动对齐,我实际得到的是:

/*                         XXXXXXXXXXXXXXXXX 
somefunc()                 XXXXXXXXXXXXXXXXX  
{                          XXXXXXXXXXXXXXXXX
body                       XXXXXXXXXXXXXXXXX
...                        XXXXXXXXXXXXXXXXX
}                          XXXXXXXXXXXXXXXXX
*/                         XXXXXXXXXXXXXXXXX 
somefunc()                 somefunc() …
Run Code Online (Sandbox Code Playgroud)

alignment beyondcompare three-way-merge

9
推荐指数
0
解决办法
3043
查看次数

在python sqlite3模块中提交行为和原子性

如果我想创建一个表并在另一个表中插入一个新条目,这可以在sqlite模块中成为原子吗?

请参阅http://docs.python.org/2/library/sqlite3.html上的文档:

默认情况下,sqlite3模块在数据修改语言(DML)语句(即INSERT/UPDATE/DELETE/REPLACE)之前隐式打开事务,并在非DML非查询语句(即SELECT或其他任何语句)之前隐式提交事务.之前所提).

因此,如果您在事务中并发出类似CREATE TABLE ...,VACUUM,PRAGMA的命令,则sqlite3模块将在执行该命令之前隐式提交.这样做有两个原因.首先,其中一些命令在事务中不起作用.另一个原因是sqlite3需要跟踪事务状态(如果事务处于活动状态).

我不确定这第二段是否适用于自动启动的交易或手动和自动交易.

Sqlite docs http://www.sqlite.org/lang_transaction.html告诉我们手动事务在显式COMMIT之前不会提交:

可以使用BEGIN命令手动启动事务.此类事务通常会持续到下一个COMMIT或ROLLBACK命令.

所以假设我们有这样的事情:

con = sqlite3.connect(fdb) 
cur = con.cursor()

sql = 'begin transaciton'
cur.execute(sql)    

sql = 'CREATE TABLE some-table ...
cur.execute(sql)

# *** is there an implicit commit at this point ?! ***

sql = 'INSERT INTO  another-table ...
cur.execute(sql)

con.commit()
Run Code Online (Sandbox Code Playgroud)

这会是原子的,还是python sqlite会在create table声明后进行提交?有没有办法让它成为原子?

python sqlite commit atomic

8
推荐指数
2
解决办法
4218
查看次数

通用类型的闭包参数 - 异常

在下面的代码中,为什么Groovy似乎忽略了方法中的closure参数提供的泛型类型声明barMany:

import groovy.transform.CompileStatic

@CompileStatic
class Main {
    static main(args) {
        FooSub foo = new FooSub()
        BarSub bar = new BarSub()
    }
}

@CompileStatic
class Foo<T> {
    void fooOne (T item) {}
    void fooMany(List<T> items) {
        items.each { T item -> fooOne(item) } // Compiles fine.
    }
}

@CompileStatic
class FooSub extends Foo<Integer> {}

@CompileStatic
class Bar<T extends Bar<T>>  {    
    void barOne (T item) {}
    void barMany(List<T> items) {

        items.each { T item -> barOne(item) } // Error:
        // …
Run Code Online (Sandbox Code Playgroud)

generics groovy closures

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

如何找出哪些字符被定义为给定语言环境的字母数字

因此,使用python正则表达式匹配,我们有\ w和其他受re.LOCALE标志影响的含义:

\ W

如果未指定LOCALE和UNICODE标志,则匹配任何字母数字字符和下划线; 这相当于集合[a-zA-Z0-9_].对于LOCALE,它将匹配集[0-9_]以及任何字符被定义为当前语言环境的字母数字.

因此,我们想要找出哪些字符被定义为给定语言环境的字母数字 - 比如说我们做了'locale -a'并且我们有一个语言环境列表,并希望找到系统上列出的语言环境之一的信息.任何快速查找信息的方法:python代码片段或单行,shell命令或某些地方的参考资料.

python regex locale

6
推荐指数
1
解决办法
462
查看次数

使用Babel CLI提取器提取Javascript gettext消息

据说这里是巴贝尔可以提取gettext的消息Python和JavaScript文件.

Babel附带了一些内置提取器:python(从Python源文件中提取消息),javascript和ignore(不提取任何内容).

命令行提取是记录在这里 -但对使用没有例子.

同样在上面的同一个指针中,有一些提到配置文件用于提取,但没有太多扩展.

当我在带有js文件的目录上运行提取器的基本命令时,我只得到生成的.PO头但没有消息.

$ pybabel extract   /path/to/js-dir

# Translations template for PROJECT.
# Copyright (C) 2012 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2012-04-22 19:39+1000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"

$ 
Run Code Online (Sandbox Code Playgroud)

以下是来自js文件的示例段我正在尝试为以下内容提取消息: …

javascript python localization gettext babel

6
推荐指数
1
解决办法
4596
查看次数

如何在emacs中切换区域中的字母大小写

如何切换Emacs中区域文本的字母大小写(将大写字母切换为小写和小写字母为大写)?

列出了转换命令但没有用于切换的命令.

例:

请切换我的信件

应成为:

请仔细阅读我的信件CASE

emacs elisp

6
推荐指数
2
解决办法
2168
查看次数

树中所有边缘不相交路径的列表

在由具有父指针和子指针的公共节点结构表示的通用树中,如何找到彼此没有重叠边缘并且以叶节点终止的所有路径的列表.

例如,给定一个这样的树:

          1
      /   |   \               
     2    3    4
    / \   |   / \
   5   6  7  8   9 
Run Code Online (Sandbox Code Playgroud)

所需的输出将是一个路径列表,如下所示:

1    2    1    1    4
|    |    |    |    |
2    6    3    4    9
|         |    | 
5         7    8
Run Code Online (Sandbox Code Playgroud)

或者以列表形式:

[[1, 2, 5], [2, 6], [1, 3, 7], [1, 4, 8], [4, 9]]
Run Code Online (Sandbox Code Playgroud)

显然,路径列表本身及其顺序可以根据树枝的处理顺序而变化.例如,如果我们首先处理左分支,则以下是另一种可能的解决方案:

[[1, 4, 9], [4, 8], [1, 3, 7], [1, 2, 6], [2, 5]]
Run Code Online (Sandbox Code Playgroud)

为了这个问题,不需要特定的订单.

algorithm tree

6
推荐指数
1
解决办法
429
查看次数

在Kotlin的二传手重载

在尝试定义接受可用于构造属性的参数类型的setter时,因此:

class Buffer(buf: String) {}

class Foo {
    var buffer: Buffer? = null
        set(value: String) {
            field = Buffer(value)
        }
}
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

Setter参数类型必须等于属性的类型

那么Kotlin的做法是什么意思呢?

setter kotlin

6
推荐指数
1
解决办法
1186
查看次数