这可能很简单,但我在文档中找不到任何东西,谷歌搜索没有帮助.我正在尝试定义一个状态,$stateProvider
我需要在服务器上点击以获取所需数据的URL取决于状态URL参数.简而言之,像:
.state('recipes.category', {
url: '/:cat',
templateUrl: '/partials/recipes.category.html',
controller: 'RecipesCategoryCtrl',
resolve: {
category: function($http) {
return $http.get('/recipes/' + cat)
.then(function(data) { return data.data; });
}
}
})
Run Code Online (Sandbox Code Playgroud)
以上不起作用.我尝试注射$routeParams
以获得所需的cat
参数,没有运气.这样做的正确方法是什么?
我不是一个专业的程序员(我的领域是医学研究),但我在C/C++和各种脚本语言方面都很有能力.不久前我被Lisp吸引了,但我没有时间认真学习它.在短暂接触R后,我决定在函数式编程语言上投入更多时间.
我想要JVM语言的实用性,从而缩小到Clojure和Scala.根据我的理解,两者都可以使用现有的Java库,并且在性能关键代码中给出的代理可以委托给Java,具有相对同样良好的性能.
这些语言在我需要的应用程序空间中如何比较?生物信息学中是否有任何实际项目使用?
已经存在的代码将是一个严重的优点,因为良好的文档和相当温和的学习曲线.另外,两者的并发模型如何相互比较?
任何人有任何显着的优点/缺点?
我有一个包含各种控件的表单.当按下提交按钮时,ajax请求被发送到服务器,该服务器回答了我想要正确显示的一些json数据.这是一次性的事情,不需要绑定等,数据是一次性读取并在之后丢弃.我可以想一些方法来组合视图和jquery,但是在Ember.js中这样做的正确方法是什么?
进一步来说:
1)如何将视图中的表单参数传递给将要处理提交事件的控制器?
2)如果我要创建一个表示提交的表单状态的路由,如何将参数序列化为对Ember有意义的路径?这甚至可能吗?
以下代码片段是获取目录列表的方法的一部分,在每个文件上调用extract方法并将生成的药物对象序列化为xml.
try(Stream<Path> paths = Files.list(infoDir)) {
paths
.parallel()
.map(this::extract)
.forEachOrdered(drug -> {
try {
marshaller.write(drug);
} catch (JAXBException ex) {
ex.printStackTrace();
}
});
}
Run Code Online (Sandbox Code Playgroud)
这是完全相同的完全相同的代码,但使用普通.list()
调用来获取目录列表并调用.parallelStream()
结果列表.
Arrays.asList(infoDir.toFile().list())
.parallelStream()
.map(f -> infoDir.resolve(f))
.map(this::extract)
.forEachOrdered(drug -> {
try {
marshaller.write(drug);
} catch (JAXBException ex) {
ex.printStackTrace();
}
});
Run Code Online (Sandbox Code Playgroud)
我的机器是四核MacBook Pro,Java v 1.8.0_60(内置1.8.0_60-b27).
我正在处理~7000个文件.平均3次运行:
第一版:有.parallel()
:20秒.没有.parallel()
:41秒
第二版:带.parallelStream()
:12秒.用.stream()
:41秒.
并行模式下的那8秒似乎是一个巨大的差异,因为extract
从流中读取并完成所有繁重工作的方法和write
执行最终写入的调用都没有改变.
我的开发机器(称为 D)运行 PostgreSQL 9.4.5。我的生产机器(称之为 P)运行 PostgreSQL 8.4.20。
我不使用 PostgreSQL 9.x 中的任何新功能或类型。
有时我需要在 D 上镜像 P 的状态,有时我需要做相反的事情。在这两种情况下,我都使用 pg_dump/pg_restore。
当我从 P 转储恢复到 D 时,我从来没有出现任何错误或警告。但是,当我做相反的事情时,我会遇到多个unrecognized configuration parameter "lock_timeout"
错误。我知道这个配置参数是在 9.3 中引入的,由于恢复过程的其余部分工作正常,我只是忽略错误消息。
我的问题是:在不同的主要版本中使用 pg_dump/pg_restore 是一个坏主意,还是可以像我在这里所做的那样安全地忽略兼容性错误?我将来会被这个咬吗?我无法升级 P,为了安全起见,我应该将 D 降级到 8.4.20 吗?
当我们在地图上调用键时,在我们在同一个地图上调用val时,结果seq中的键的顺序是否保证与值的顺序相同?
换句话说,可以将函数f映射到地图的内容上,如下所示:
(map #(f %1 %2) (keys m) (vals m))
Run Code Online (Sandbox Code Playgroud)
如果不是,在clojure中是否有相当于perl的每个?或者也许是zipmap的反函数?
从这个 debian repo 安装了emacs-snapshot .在我的init.el中添加:
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/"))
(package-initialize)
Run Code Online (Sandbox Code Playgroud)
当我使用Mx package-refresh-contents时,它会挂起大约2分钟并显示以下消息:
Contacting host: marmalade-repo.org:80
Run Code Online (Sandbox Code Playgroud)
然后用消息超时:
Failed to download `marmalade' archive.
Run Code Online (Sandbox Code Playgroud)
我可以使用tcpdump看到,软件包列表是实际取出.不确定错误发生的原因.尝试安装Marmalade页面提供的package.el,没有运气.
我有一个包含6列和678,552行的csv文件.不幸的是,我不能共享任何数据样本,但类型是直截了当:int64
,int64
,date
,date
,string
,string
并且没有缺失值.
是时候在R中的数据帧中加载这些数据read.table
:~3秒.
是时候在F#中使用CsvFile.Load加载这些数据:~3秒.
是时候在F#中的Deedle数据帧中加载这些数据:~7秒.
向inferTypes=false
Deedle 添加并提供架构Frame.ReadCsv
可将时间缩短至约3秒
是时候在F#中使用CsvProvider加载这些数据:~5分钟.
在我定义Schema
参数中的类型后,这5分钟甚至可以消除F#用来推断它们的时间.
我知道类型提供程序需要做的不仅仅是R或CsvFile.Load,以便将数据解析为正确的数据类型,但我对x100速度惩罚感到惊讶.更令人困惑的是Deedle加载数据所需的时间,因为它还需要推断类型和适当的转换,组合系列等.我实际上预计Deedle需要比CsvProvider更长的时间.
在这个问题中,CsvProvider的不良性能是由大量的列引起的,这不是我的情况.
我想知道我是做错了什么,或者是否有任何方法可以加快速度.
只是为了澄清:创建提供者几乎是即时的.当我迫使生成的序列被实现时,Seq.length df.Rows
fsharpi提示返回需要大约5分钟.
我在Linux系统上,单声道v4.6.1上的F#v4.1.
这是CsvProvider的代码
let [<Literal>] SEP = "|"
let [<Literal>] CULTURE = "sv-SE"
let [<Literal>] DATAFILE = dataroot + "all_diagnoses.csv"
type DiagnosesProvider = CsvProvider<DATAFILE, Separators=SEP, Culture=CULTURE>
let diagnoses = DiagnosesProvider()
Run Code Online (Sandbox Code Playgroud)
EDIT1: 我添加了Deedle将数据加载到帧中的时间.
EDIT2:
添加了Deedle所采用的时间inferTypes=false
和提供的模式.
此外,CacheRows=false
按照注释中的建议在CsvProvider中提供对加载时间没有明显影响.
EDIT3:
好的,我们到了某个地方.由于一些特殊的原因,它似乎Culture …
有人可以向我解释这种行为吗?
import pandas as pd
dates = pd.date_range('1/1/2000', periods=8)
df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])
df.ix['2000-01-01':'2000-01-02', ['A', 'C']]
## Output:
A C
2000-01-01 0.224944 -0.689382
2000-01-02 -0.824735 -0.805512
df.ix[['2000-01-01', '2000-01-02'], ['A', 'C']]
## Output:
A C
2000-01-01 NaN NaN
2000-01-02 NaN NaN
Run Code Online (Sandbox Code Playgroud)
我期待两个索引操作都返回相同的(第一个)结果.
然后我得到了它:
from datetime import datetime
df.loc[[datetime(2000, 1, 1), datetime(2000, 1, 5)], ['A','C']]
## Output
A C
2000-01-01 0.224944 -0.689382
2000-01-05 -0.393747 0.462126
Run Code Online (Sandbox Code Playgroud)
现在,我不知道大熊猫的内部以及为什么它在给定范围时隐式地将字符串转换为日期但是在给定列表时没有,但我的猜测是范围清楚地表明我们的意思是具有序数性质的对象所以大熊猫也许检查索引,看到它是一个日期时间,因此将字符串解析为日期.
但问题就变成了,为什么当我们提供单个字符串时它会做正确的事情?
df.loc['2000-01-01', ['A','C']]
## Output:
A 0.224944
C -0.689382
Name: 2000-01-01 …
Run Code Online (Sandbox Code Playgroud) 我在 OSX Yosemite 上运行 Emacs 24.5 和 R 3.2
我的 ~/.bash_profile 中有这个:
export LANG=en_US.UTF-8
export LANGUAGE=en_US:en
export LC_CTYPE="en_US.UTF-8"
export LC_NUMERIC="en_US.UTF-8"
export LC_TIME="en_US.UTF-8"
export LC_COLLATE="en_US.UTF-8"
export LC_MONETARY="en_US.UTF-8"
export LC_MESSAGES="en_US.UTF-8"
export LC_PAPER="en_US.UTF-8"
export LC_NAME="en_US.UTF-8"
export LC_ADDRESS="en_US.UTF-8"
export LC_TELEPHONE="en_US.UTF-8"
export LC_MEASUREMENT="en_US.UTF-8"
export LC_IDENTIFICATION="en_US.UTF-8"
export LC_ALL=en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
这在我的 emacs 设置中:
(setq current-language-environment "UTF-8")
(add-hook 'ess-R-post-run-hook
(lambda () (set-buffer-process-coding-system
'utf-8-nfd-unix 'utf-8-nfd-unix)))
Run Code Online (Sandbox Code Playgroud)
我什至在系统范围内设置了以下内容:
defaults write org.R-project.R force.LANG en_US.UTF-8
Run Code Online (Sandbox Code Playgroud)
当我从命令行或在 RStudio 中运行 R 时,它使用正确的语言环境。但是,当我在 emacs 中运行 R 进程时,我收到以下警告:
During startup - Warning messages:
1: Setting LC_CTYPE failed, using …
Run Code Online (Sandbox Code Playgroud)