关于将视图状态存储为URL的一部分的一般(如果有的话)共识是什么Angularjs以及我将如何去做?我有一个相当复杂的视图/路由,有许多过滤器可供设置,制表符等导致视图状态.
我看到将所有这些视图组件的状态作为URL的一部分存储在应用程序中的更简单导航中的优势(导航back将恢复以前的视图,所有选择都是在不从服务器加载状态的情况下进行的,这将是一种替代方案) .另一个优点是视图状态变为可收藏的.
有没有我可以用来指导的模式?有没有人以前做过这个并且可以分享一些经验?我应该远离在URL中存储视图状态吗?
是否可以将pandas系列值转换为特定类型并设置那些无法转换的元素?
我找到Series.astype(dtype, copy=True, raise_on_error=True)并设置raise_on_error=True为避免异常,但这不会将无效项设置为na ...
更新
更确切地说,我想指定一个列应转换为的类型.对于包含值[123, 'abc', '2010-01-01', 1.3]和类型转换的系列float,我希望[123.0, nan, nan, 1.3]结果是,如果datetime选择,则只series[2]包含有效的日期时间值.convert_objects恕我直言,不允许这种灵活性.
我发现DiGraph.reverse()可以反转有向图中所有边的方向,但是有没有办法只改变特定边的方向呢?
出于某种原因,在我试图修改的Python应用程序中,记录器没有记录任何内容.我跟踪错误logging/__init__.py
def handle(self, record):
"""
Call the handlers for the specified record.
This method is used for unpickled records received from a socket, as
well as those created locally. Logger-level filtering is applied.
"""
if (not self.disabled) and self.filter(record):
self.callHandlers(record)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么,但self.disabled就是True.在应用程序中没有任何地方设置此值,我不认为任何包正在改变它.记录器像往常一样实例化logger = logging.getLogger(__name__).当我logger.disabled = False在实际记录任何内容之前设置(在调用之前logger.info()),记录器打印预期的日志文本.但如果我不这样做,它会在handle()没有记录任何东西的情况下返回
有什么办法可以调试吗?也许可以改变Logger类,以便disabled在写入时调用某些函数...
>>> idx = np.random.randint(2, size=(9, 31))
>>> a = np.random.random((9, 31, 2))
>>> a[idx].shape
(9, 31, 31, 2)
Run Code Online (Sandbox Code Playgroud)
为什么上述方法至少不会产生(9, 31, 1)甚至更好的形状(9, 31)?如何获取基于中的值返回的选择idx?
更新资料
这也许是一个更具体且希望是模拟的示例:假定此数组
a = np.asarray([[1, 2], [3, 4], [5, 6], [7, 8]])
Run Code Online (Sandbox Code Playgroud)
我将如何选择数组[1, 4, 5, 8](即每行的第0、1、0、1个元素)?
通读 ZeroMQ 文档,当我发现这三种套接字组合时,我有点迷失了。他们是:
据我所知,DEALER和ROUTER是同步REQ/REP通信的替代品,因此它们变得异步并且可以连接多个节点。我不明白的是 DEALER 如何替代 DEALER 到 DEALER 中的 REQ 和 REP(以及 ROUTER 到 ROUTER 中的路由器)。
我正在寻找一种模式,允许任意数量的客户端将作业提交给任意数量的工作人员处理(通过负载平衡)这些作业并向客户端返回响应(和中间结果)(异步,但发回多条消息)。客户可能还需要能够提前终止工作。我发现文档在这方面有点简单(我绝对不是专家,可能错过了相关部分)。
我很乐意自己解决细节,但每次我认为我找到了合适的模式时,我都会发现另一种可能同样合适的模式(例如,我认为这 3 种模式同样合适:http://zguide. Zeromq.org/page:all#ROUTER-Broker-and-REQ-Workers,http://zguide.zeromq.org/page:all#ROUTER-Broker-and-DEALER-Workers,http://zguide.zeromq。 org/page:all#A-Load-Balancing-Message-Broker)。
任何有关结构的建议(哪个套接字与哪个组件进行通信)都值得赞赏。
更新
这是我到目前为止想到的:
import multiprocessing
import zmq
import time
router_url_b = 'tcp://*:5560'
router_url = 'tcp://localhost:5560'
dealer_url_b = 'tcp://*:5561'
dealer_url = 'tcp://localhost:5561'
def broker():
context = zmq.Context()
router = context.socket(zmq.ROUTER)
router.bind(router_url_b)
dealer = context.socket(zmq.DEALER)
dealer.bind(dealer_url_b)
poll = zmq.Poller()
poll.register(router, zmq.POLLIN)
poll.register(dealer, zmq.POLLIN)
while True:
poll_result = dict(poll.poll())
if …Run Code Online (Sandbox Code Playgroud) Google 文档在这个主题上有点通用,我发现很难绕过他们使用的不同 API 和术语,所以我想知道是否有人可以给我指出正确的方向。
我正在寻找一种gcloud直接从 Python 调用命令的方法。我已经安装gcloud在我的 Python 环境中,作为一个示例,我想知道如何从 Python 执行以下操作:
gcloud compute copy-files [Source directory or file name] [destination directory of file name]
Run Code Online (Sandbox Code Playgroud) python google-compute-engine gcloud gcloud-python google-cloud-python
对于一个相对较大的Pandas DataFrame(几十万行),我想创建一个由apply函数产生的系列.问题是功能不是很快,我希望它能以某种方式加速.
df = pd.DataFrame({
'value-1': [1, 2, 3, 4, 5],
'value-2': [0.1, 0.2, 0.3, 0.4, 0.5],
'value-3': somenumbers...,
'value-4': more numbers...,
'choice-index': [1, 1, np.nan, 2, 1]
})
def func(row):
i = row['choice-index']
return np.nan if math.isnan(i) else row['value-%d' % i]
df['value'] = df.apply(func, axis=1, reduce=True)
# expected value = [1, 2, np.nan, 0.4, 5]
Run Code Online (Sandbox Code Playgroud)
欢迎任何建议.
更新
通过预缓存所选列可以实现非常小的加速(~1.1).func将改为:
cached_columns = [None, 'value-1', 'value-2', 'value-3', 'value-4']
def func(row):
i = row['choice-index']
return np.nan if math.isnan(i) else row[cached_columns[i]]
Run Code Online (Sandbox Code Playgroud)
但我希望能有更大的加速......
我注意到当某些 Numpy float64 值保存为 Excel 文件(通过 Pandas DataFrame)时,它们会发生变化。首先我认为这与 Excel 中的一些不精确有关,但 Excel 似乎将浮点数编码为双精度,所以我对这个观察有点困惑。
>>> import numpy as np
>>> import pandas as pd
# Create a floating point number that exhibits the problem.
>>> ba = bytearray(['\x53', '\x2a', '\xb0', '\x49', '\xf3', '\x79', '\x90', '\x40'])
>>> ba
bytearray(b'S*\xb0I\xf3y\x90@')
>>> f = np.frombuffer(ba)
>>> f[0]
1054.4875857854684
# Write to dataframe to save as Excel file.
>>> df = pd.DataFrame({'a': f})
>>> df.to_excel('test.xlsx', engine='xlsxwriter')
# Read excel file (when viewing the file in LibreOffice, …Run Code Online (Sandbox Code Playgroud) 我在 webpack 5/Vuejs 3 应用程序中使用 webpack-dev-server 来利用在应用程序开发期间将代码更改保存在编辑器中后立即显示在浏览器中的功能(对该功能的详细解释我感兴趣,但我认为它在“热门”或“HMR”下交易)。
好处是这原则上是有效的。我可以在编辑器中更新 .vue 文件,保存它,查看 webpack-dev-server 重新编译,查看 JS 控制台日志,表明它检测到更改,并且更改(例如文本更改)显示在浏览器页面中。
但是,当在初始(硬)页面加载后导航到另一路由(URL)时,导致初始页面 URL 与当前 URL 不同,代码更改不会反映在浏览器页面中。所有其他步骤(例如编译、客户端上的更改检测、重新加载更改、日志)都会执行,但只是不更新浏览器页面。然而,当用户导航到其他地方并返回时,它会更新页面。
这个问题听起来很熟悉吗?我认为即使在单页应用程序中导航到另一个路由(URL)时,实时更新也应该正常工作(如果我的期望是错误的,请更正)。
我的相关部分webpack.conf.js(恕我直言,没什么特别的):
devServer: {
historyApiFallback: {
rewrites: [{
from: /.*/,
to: path.posix.join(config.dev.assetsPublicPath, 'index.html')
}]
},
hot: true,
host: HOST || config.dev.host,
port: PORT || config.dev.port,
open: config.dev.autoOpenBrowser,
proxy: config.dev.proxyTable
}
Run Code Online (Sandbox Code Playgroud)
更新
有趣的是,<style>即使初始页面加载 URL 已更改,该部分的更新也会立即反映出来。