通过"人类可读的序列化格式"我的意思是YAML,JSON,INI或喜欢.请注意,XML对于我的目的来说,太冗长和太不方便了,所以让我们把它作为最后的手段.
格式应将数据存储为"命名键 - 值"对,并允许嵌套和数组.但是,缺少数组并不重要.此外,非常感谢类型感知(不仅将数据作为普通字符串返回的能力).
我真正需要的是一个纯C库,它提供了一个用于解析数据的API(编码是可选的,不太重要).在为ARM7编译时,它必须适合大约16-20 KiB.
我已经用Google搜索并在周围徘徊,但找不到满足上述所有要求的工件.
我有以字节为单位的数据.我需要在图表上绘制这些值作为人类可读的标签(如2.5KB,14MB等),并需要帮助功能(输入数据 - 实际值,输出 - 人类可读的字符串).
我做了这样的功能,但我想要更优雅的实现
function tickFormatter(value, type) {
var suffix = (type == "bytes") ? ['B', 'KB', 'MB', 'GB'] : ['', 'K', 'M', 'G']
if(value > (1024 * 1024 * 1024 * 1024)) {
return (value / (1024 * 1024 * 1024 * 1024)).toFixed(2) + suffix[3]
} else if(value > (1024 * 1024 * 1024)) {
return (value / (1024 * 1024 * 1024)).toFixed(2) + suffix[2]
} else if (value > (1024 * 1024)) {
return (value / …Run Code Online (Sandbox Code Playgroud) 我需要将包含内存使用量的字符串1048576(例如:(1M))转换为人类可读的版本,反之亦然.
注意:我已经看过这里了: 可重用的库,以获得文件大小的人类可读版本?
在这里(即使它不是python): 如何将人类可读的内存大小转换为字节?
到目前为止没有什么能帮助我,所以我在其他地方看了
我在这里找到了一些可以解决此问题的内容:http://code.google.com/p/pyftpdlib/source/browse/trunk/test/bench.py?specpec = swn984&r = 984#137,或者,对于较短的网址:http://goo.gl/zeJZl
代码:
def bytes2human(n, format="%(value)i%(symbol)s"):
"""
>>> bytes2human(10000)
'9K'
>>> bytes2human(100001221)
'95M'
"""
symbols = ('B', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y')
prefix = {}
for i, s in enumerate(symbols[1:]):
prefix[s] = 1 << (i+1)*10
for symbol in reversed(symbols[1:]):
if n >= prefix[symbol]:
value = float(n) / prefix[symbol]
return format % locals()
return format % dict(symbol=symbols[0], value=n)
Run Code Online (Sandbox Code Playgroud)
还有一个转换功能(相同的网站):
def human2bytes(s): …Run Code Online (Sandbox Code Playgroud) 我发现了很多关于将原始字节信息转换为人类可读格式的信息,但我需要做相反的事情,即将字符串"1.6 GB"转换为长值1717990000.是否内置/良好 - 这样做的定义方式,还是我几乎不得不自己动手?
[编辑]:这是我的第一次刺...
static class ByteFormat extends NumberFormat {
@Override
public StringBuffer format(double arg0, StringBuffer arg1, FieldPosition arg2) {
// TODO Auto-generated method stub
return null;
}
@Override
public StringBuffer format(long arg0, StringBuffer arg1, FieldPosition arg2) {
// TODO Auto-generated method stub
return null;
}
@Override
public Number parse(String arg0, ParsePosition arg1) {
return parse (arg0);
}
@Override
public Number parse(String arg0) {
int spaceNdx = arg0.indexOf(" ");
double ret = Double.parseDouble(arg0.substring(0, spaceNdx));
String unit = arg0.substring(spaceNdx + …Run Code Online (Sandbox Code Playgroud) 我正在开发一个系统,该系统大量使用假名来为研究人员提供隐私关键数据.这些假名应具有以下属性:
我的第一个想法是使用UUID4.它们在(1)和(2)上相当不错,但在(3)中却没有那么多.
一种变体是使用更宽的字母表对UUID进行编码,从而产生更短的字符串(例如,参见shortuuid).但我不确定这是否真的提高了可读性.
我目前正在研究的另一种方法是2005年的一篇题为"患者识别符的最佳代码"的论文,旨在解决我的问题.这里描述的算法创建了具有30位熵的8字符假名.我宁愿使用更广泛审查的标准.
然后还有git方法:只显示实际假名的前几个字符.但这意味着化名可能在一段时间后失去其独特性.
所以我的问题是:人类可读的独特ID是否有任何广泛使用的标准?
在一个关于人类可读URL 的现在迁移的问题中,我允许自己详细描述我的一个爱好:
当我遇到像
http://www.example.com/product/123/subpage/456.html我这样的URL时,我总是认为这是尝试创建有意义的分层URL,但这并不是完全分层的.我的意思是,你应该能够一次切掉一个级别.在上面,URL有两个违反此原则的违规行为:
/product/123是一个表示为两个级别的信息.它会被更正确地表示为/product:123(或者你喜欢的任何分隔符)/subpage很可能本身并不是一个实体(即,你不能去了一个从水平456.html作为http://www.example.com/product/123/subpage是"无").因此,我发现以下更正确:
Run Code Online (Sandbox Code Playgroud)http://www.example.com/product:123/456.html在这里,您始终可以一次向上导航一个级别:
http://www.example.com/product:123/456.html- 子页面http://www.example.com/product:123- 产品页面http://www.example.com/- 根遵循相同的理念,以下内容将有意义[并提供产品列表的附加链接]:
Run Code Online (Sandbox Code Playgroud)http://www.example.com/products/123/456.html哪里:
http://www.example.com/products/123/456.html- 子页面http://www.example.com/products/123- 产品页面http://www.example.com/products- 产品清单http://www.example.com/- 根
我对这种方法的主要动机是,如果每个"路径元素"(由分隔符/)是自包含的1,您将始终能够通过简单地删除URL的最后一个元素来导航到"父".这是我(有时)在我想要转到父目录时在我的文件浏览器中执行的操作.遵循相同的逻辑线,用户(或搜索引擎/爬虫)也可以这样做.我觉得很聪明.
另一方面(这是问题的重要部分):虽然我永远无法防止用户试图访问他自己截断的URL,但我错误地断言(并且尊重)搜索引擎可能会做同样的事情?也就是说,期望没有搜索引擎(或者真的:Google)会尝试访问http://www.example.com/product/123/subpage(上面的第2点)是否合理?(或者我真的只考虑人为因素吗?)
这不是关于个人偏好的问题.这是关于我对爬虫/索引器的期望以及在设计URL时我应该考虑非人类URL操作的范围的技术问题.
此外,结构"深度" http://www.example.com/product/123/subpage/456.html是4,其中http://www.example.com/products/123/456.html只有3.有传言说这个深度影响搜索引擎排名.至少,所以我被告知.(现在很明显,搜索引擎优化并不是我最了解的.)这是(仍然?)真的:层次深度(目录数量)是否会影响搜索排名?
那么,我的"预感"在技术上是合理的还是我应该把时间花在其他事情上?
示例:这样做(差不多)正确的
好,所以这几乎是正确的.例证:个人资料,例如http://stackoverflow.com/users/52162:
http://stackoverflow.com/users/52162 - 单个档案 …有没有办法从NSFilePosixPermissions整数中获取人类可读的字符串(例如@"drwxr-xr-x")?
protobuf-net是否有任何API将protobuf转换为人类可读的形式?我希望像TextFormat这样的东西.
我想在我的linux机器上找到没有文件扩展名约束的人类可读文件.这些文件应该是人类感知文件,如文本,配置,HTML,源代码等文件.你能建议一种过滤和定位的方法吗?
是否有可能以某种方式将PartialFunction(让我们假设它总是只包含一个案例)编组成人类可读的东西?
假设我们有类型Any(messages:List [Any])的集合和使用模式匹配块定义的PartialFuntion [Any,T]的数量.
case object R1
case object R2
case object R3
val pm1: PartialFunction[Any, Any] = {
case "foo" => R1
}
val pm2: PartialFunction[Any, Any] = {
case x: Int if x > 10 => R2
}
val pm3: PartialFunction[Any, Any] = {
case x: Boolean => R3
}
val messages: List[Any] = List("foo", 20)
val functions = List(pm1, pm2)
Run Code Online (Sandbox Code Playgroud)
然后我们可以找到所提供的PF和相关应用程序匹配的所有消息
val found: List[Option[Any]] = functions map { f =>
messages.find(f.isDefined).map(f)
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我需要以 …
human-readable ×10
byte ×1
c ×1
converter ×1
embedded ×1
find ×1
function ×1
hierarchical ×1
java ×1
javascript ×1
linux ×1
long-integer ×1
memory ×1
nsstring ×1
objective-c ×1
permissions ×1
posix ×1
protobuf-net ×1
python ×1
scala ×1
seo ×1
standards ×1
url ×1
uuid ×1
yaml ×1