小编cit*_*txx的帖子

如何监测mnesia负荷?

mnesia overloaded主要使用async_dirty查询和ram_copies表时有时会收到错误消息.因此,要了解发生了什么,我想获得有关mnesia状态的更多信息,例如每秒查询数或查询队列的大小.我搜索了很多,发现了两种可能的方法.

第一个是mnesia:system_info可以返回当前事务列表的函数.但它似乎无法提供有关非事务性查询的信息.

第二个是订阅mnesia事件,但是使用这种方式需要一些活动的后台处理以及手动订阅每个表事件.

是否有更好的方法来获取此信息?

erlang monitoring mnesia

14
推荐指数
1
解决办法
749
查看次数

iOS App Bundle中的多个本地化.strings文件

我有一个相当复杂的项目,包括几个大型的本地化子项目.

我的大多数子项目都是通过一个Localizable.strings文件进行本地化的.此文件将复制到SubProjectName.bundle目标中,该目标与SubProjectName.a主项目中的静态库一起使用.这很好用.

但是,我的一个子项目包含许多本地化的.strings文件.无论设备(或模拟器)的配置方式如何,此项目都无法读取除英语之外的任何语言的字符串.

例如,这行代码始终返回英文字符串:

[[NSBundle myResourcesBundle] localizedStringForKey:@"MY_TEST_STRING" value:@"" table:@"MyTable"]
Run Code Online (Sandbox Code Playgroud)

其中MyTable对应于本地化为多种语言的MyTable.strings文件.当我查看.app包时,所有本地化都在那里,坐在应用程序内的"MyBundle.bundle"资源中.

但是,以下代码在所有本地化中正确查找给定字符串的翻译:

for (NSString *language in [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"])
{
    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle myResourcesBundle] pathForResource:language ofType:@"lproj"]];
    NSLog(@"%@: %@", language, NSLocalizedStringFromTableInBundle(@"MY_TEST_STRING", @"MyTable", bundle, nil));
}
Run Code Online (Sandbox Code Playgroud)

因此,当bundle是实际MyBundle.bundle/<LanguageCode>.lproj文件夹时,字符串查找起作用.但显然这违背了iOS提供的自动查找的目的.

(注意,[NSBundle myResourcesBundle]上面只是一个静态便捷方法来获取子项目的自定义包).

-

编辑:我一直在试验这个,如果我en.lproj从子项目的包中删除文件夹,那么它正确使用设备或模拟器的区域设置.

例如,我有:

MyApp.app/
 |
  - MyResources.bundle/
      |
       - en.lproj/
      |
       - zh-Hans.lproj/
Run Code Online (Sandbox Code Playgroud)

当我将模拟器(或设备)设置为简体中文时,它会查找字符串,en.lproj即使语言环境是zh-Hans.如果我删除en.lproj文件夹并重新启动应用程序,它会正确使用zh-Hans本地化.

localization uikit nsbundle nslocalizedstring ios

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

如何在Erlang/OTP中将主管的子pid分享给另一个孩子

在我的Erlang/OTP应用程序中,我有一个one_for_all主管(sup),有几个孩子.其中一个子节点(带有gen_server行为的child1)应该能够向另一个节点发送消息(带有supervisor行为的child2).当然,我可以注册它,但是用多余的名字堵塞全球范围似乎不是一个好主意.

从而使这种相互作用可能的唯一途径是提供child1与的PID 的child2.说到做到.有supervisor:wich_children/1适当的功能调用.刚好路过的PID为参数chidl1,称which_childrenchild1:init,和...得到一个僵局.SUP等待child1开始,child1等待为孩子的描述:

init(SupPid) ->
    Descriptions = supervisor:which_children(SupPid),
    ... .
Run Code Online (Sandbox Code Playgroud)

这可以通过以下方法解决:

init(SupPid) ->
    gen_server:cast(self(), initialize),
    ... .

handle_cast(initialize, State) ->
    Descriptions = supervisor:which_children(SupPid),
    ...  % Generating new state containing desired pid
    {noreply, NewState}.
Run Code Online (Sandbox Code Playgroud)

但是,我对此解决方案并不满意.

问题是:根据OTP设计原则,监管树成员之间最常见的交互方式是什么?

erlang erlang-otp

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

什么是Mnesia复制策略?

  1. Mnesia使用什么策略来定义将存储特定表副本的节点?
  2. 我可以强制Mnesia为每个表使用特定数量的副本吗?可以动态更改此数字吗?
  3. 是否有任何资源(除了源代码之外)都具有Mnesia内部算法的详细说明(而不仅仅是概述)?

erlang mnesia

4
推荐指数
1
解决办法
1156
查看次数

无法理解matplotlib的例子,其中省略号和冒号可能与索引相关联

我对这个matplotlib例子有疑问.

这是我不理解的部分

def update_line(num, data, line):
    line.set_data(data[...,:num])
    return line,
Run Code Online (Sandbox Code Playgroud)

怎么line.set_data(data[...,:num])办?

python indexing ellipsis colon slice

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

Mnesia:read、match_object、select 和 qlc 查询的时间和空间效率

Mnesia 有四种读取数据库的方法:read, match_object, select, qlc。当然,除了他们肮脏的同行。它们中的每一个都比以前的更具表现力。

  1. 其中哪些使用索引?
  2. 鉴于此方法之一中的查询,在更具表现力的方法中的相同查询是否会因时间/内存使用而降低效率?多少?

更新。 正如提到的CRAP ANSWERSread只是一个键值查找,但经过一段时间的探索,我发现还有函数index_readand index_write,它们以相同的方式工作,但使用索引而不是主键。

erlang mnesia

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

Mnesia:包表类型是如何实现的?

我有一个带有整数键(时间戳)的表,其中包含应从数据库中删除特定记录的时间。还有一个清理查询,它从这个表中获取过期时间少于现在的记录并删除它们。

Erlang的文件说,有四种类型的表类型:setordered_setbag,和duplicate_bag

  • set 使用哈希表实现,因此读取时间复杂度为 O(1)。
  • ordered_set 是使用树实现的,因此读取需要 O(log(n)) 时间复杂度,但它更好地适用于随后的间隔。
  • 我没有找到有关bag实施的信息。

ordered_set看起来很理想,但我不能使用它,因为两条记录可以具有相同的时间戳。所以问题是:

bag表是如何实现的,是否适合查询后续间隔?如果没有,我怎样才能获得“ ordered_bag”功能?

erlang mnesia

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

Erlang - 模式匹配谓词

要知道特定表达式是否与指定模式匹配,我可以在erlang中写入如下内容:

case <expression> of
    <pattern> -> true;
    _ -> false
end
Run Code Online (Sandbox Code Playgroud)

例如:

case {1, 2, 3} of
    {_, 2, _} -> true;
    _ -> false
end
Run Code Online (Sandbox Code Playgroud)

有没有办法以更紧凑的方式编写它?就像是:

is_match(<pattern>, <expression>)
Run Code Online (Sandbox Code Playgroud)

erlang pattern-matching

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