任何人都可以建议一个JSON解析器允许任何类型的注释,使用PHP绑定 - 需要严重的配置文件的评论,但json_decode不支持它们.
(我知道:1.其他格式如YAML,2.评论不属于标准的一部分)
更新:
我们为什么不使用:
YAML:基准测试显示速度较慢 - 我们可能希望通过网络发送数据 - 不确定YAML是否最适合.
XML:太冗长 - 简单的人工编辑是必需的.而且不需要XML的扩展功能.
INI:数据中存在可变深度的层次结构和嵌套.我们需要一种无处不在的格式,因为数据可能与应用程序一起分发,也可能与其他语言的应用程序一起使用.
预处理:数据可以由用户提供和共享,在向应用添加数据之前很难强制要求预处理.
我理解ICU的本地化部分 - 日期,时间和货币格式,整理等.当涉及到消息翻译时,我看到人们说ICU不提供消息翻译功能 - 例如检查这个SOF问题.
但是,在检查ICU文档时,我们发现它提供了资源包,文档似乎暗示将它们用于消息转换:
在PHP intl文档中,例如:
本地化软件产品通常需要根据当前区域设置定制的数据集,例如:消息,标签,格式化模式.ICU资源机制允许定义应用程序可以在区域设置的基础上加载的资源集,同时以统一的与区域无关的方式访问它们.
此处的文档:http://userguide.icu-project.org/locale/resources 描述了与键值存储类似的功能,文本源可以编译为二进制格式.
我的问题是ICU资源包(包括访问功能和存储格式)是用于 - 或者它是其目的的一部分 - 用于消息转换 - 例如gettext和.po文件.如果是这样,是否有任何资源或教程讨论这种用法.
或者重新措辞:在其设计目标中,ICU是否意味着与单独的消息转换工具结合使用,或者它是否努力自己提供这样的功能,或者两种选择都是可能的.
在'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) 如果我想创建一个表并在另一个表中插入一个新条目,这可以在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声明后进行提交?有没有办法让它成为原子?
在下面的代码中,为什么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) 因此,使用python正则表达式匹配,我们有\ w和其他受re.LOCALE标志影响的含义:
\ W
如果未指定LOCALE和UNICODE标志,则匹配任何字母数字字符和下划线; 这相当于集合[a-zA-Z0-9_].对于LOCALE,它将匹配集[0-9_]以及任何字符被定义为当前语言环境的字母数字.
因此,我们想要找出哪些字符被定义为给定语言环境的字母数字 - 比如说我们做了'locale -a'并且我们有一个语言环境列表,并希望找到系统上列出的语言环境之一的信息.任何快速查找信息的方法:python代码片段或单行,shell命令或某些地方的参考资料.
据说这里是巴贝尔可以提取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文件的示例段我正在尝试为以下内容提取消息: …
如何切换Emacs中区域文本的字母大小写(将大写字母切换为小写和小写字母为大写)?
列出了转换命令但没有用于切换的命令.
例:
请切换我的信件
应成为:
请仔细阅读我的信件CASE
在由具有父指针和子指针的公共节点结构表示的通用树中,如何找到彼此没有重叠边缘并且以叶节点终止的所有路径的列表.
例如,给定一个这样的树:
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)
为了这个问题,不需要特定的订单.
在尝试定义接受可用于构造属性的参数类型的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的做法是什么意思呢?