小编scp*_*ntm的帖子

Bash中的多维数组

我正在计划一个脚本来管理我的Linux系统的某些部分,我正在决定是否要使用.

我更喜欢将此作为Bash脚本,因为命令更容易,但真正的决定因素是配置.我需要能够在配置文件中存储多维数组,以告诉脚本如何处理自身.使用bash在配置文件中存储简单的key = value对很容易,但我能想到做多维数组的唯一方法是使用两层解析引擎,类似于

array=&d1|v1;v2;v3&d2|v1;v2;v3
Run Code Online (Sandbox Code Playgroud)

但是marshall/unmarshall代码可能会成为一只熊,而且对于下一个必须管理这个问题的可怜的人来说,它远非用户友好.如果我不能轻易地在bash中执行此操作,我只需将配置写入xml文件并在python中编写脚本.

在bash中有一个简单的方法吗?

感谢大家.

arrays bash shell multidimensional-array

44
推荐指数
6
解决办法
15万
查看次数

获取bash脚本以回显正在执行的命令

我把一堆别名命令放在一个文件夹中.主要是ssh,所以不必键入

ssh [user]@[server]
Run Code Online (Sandbox Code Playgroud)

一天十次,我可以打字

server
Run Code Online (Sandbox Code Playgroud)

并且别名脚本触发.脚本就是命令

ssh [user]@[server]
Run Code Online (Sandbox Code Playgroud)

这一切都很好.但我想知道在bash中是否有一种方法,而不是静静地触发ssh命令,它会显示正在执行的命令?

bash

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

如何重新实现枚举的值

我需要重新实现一些枚举的enum.valueof方法,这样它们就不再抛出异常,而是如果枚举中不存在值,它们只返回null.

我正在尝试基本的

@Override
    public static <T extends Enum<T>> T valueOf(Class<T> enumType,
            String name){
Run Code Online (Sandbox Code Playgroud)

但它没有用,说我需要覆盖或实现超类型.

我想我可以拿出一个超级课,但我不知道如何把它放在一起.有任何想法吗?

java enums

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

使用azure pipeline判断模板中是否存在变量

我正在尝试找出一种方法来执行以下操作

variables:
  ${{ if eq(variables['var-a'], exists_and_is_set) }}:
    namespaceName: $(var-a)
  ${{ if ne(variables['var-a'], exists_and_is_set) }}:
    namespaceName: $(var-b)
Run Code Online (Sandbox Code Playgroud)

基本上,如果变量 A 存在并且有一个值 != null != '' 则使用它,否则使用另一个变量。这里的脚本非常简单,我找不到方法来做到这一点。原因是我正在进行更改,在使用此模板的数百个 CICD 管道中,只有 10 个左右会使用var-a,因此我试图找到一种方法来实现逻辑,而不必去更新数百个管道包含他们不会使用的东西。

azure-pipelines

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

如何通过Maven正确安装和配置JSF库?

我正在尝试将基于JSF的应用程序部署到Tomcat 6.我的构建系统的设置方式,WAR本身没有任何库,因为该服务器共提供43个应用程序.而是将库复制到共享库文件夹中并在应用程序之间共享.部署时,我收到此错误

SEVERE: Error deploying configuration descriptor SSOAdmin.xml
java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file javax/faces/webapp/FacesServlet
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1667)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.java:108)
    at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:58)
    at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:297)
    at org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:1078)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:261)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4611)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:799)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:779)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:601)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:675)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:601)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1315) …
Run Code Online (Sandbox Code Playgroud)

installation configuration jsf tomcat maven

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

在cygwin中使用Notepad ++ for git

这是这个问题的延伸

如何在msysgit中使用Notepad ++(或其他)?

我已经为我的shell脚本完成了所有可以想到的组合.当我有我的cygwin控制台(我使用mintty,如果它重要)我可以打字

npp {file}
Run Code Online (Sandbox Code Playgroud)

并正确打开文件.但是当我做一个

git rebase -i HEAD~5
Run Code Online (Sandbox Code Playgroud)

npp打开一个空白的新文档,而不是用于控制rebase的交互式文件.知道为什么会这样吗?

git --version
git version 1.7.9

Windows 7机器和NPP 5.9.8上最新版本的cygwin

另外,这是我的包装脚本

#!/bin/sh
"C:/Program Files (x86)/Notepad++/notepad++.exe" -multiInst -notabbar \
  -nosession -noPlugin "$*"
Run Code Online (Sandbox Code Playgroud)

git cygwin notepad++

7
推荐指数
2
解决办法
4267
查看次数

跨单页面视图翻转和多页翻转维护应用程序状态

嗯,随着技术的进步,我们很久以前解决的问题再次出现.

回到黑暗时代,当PHP和ASP被认为是令人敬畏的时候,我们总是遇到视图状态的问题.如果你有一个页面,说上十几个选择组合框,您的用户选择一些组合和明年命中,然后意识到他们搞砸了,打在浏览器上的后退按钮,组合框会回来在默认状态下,通常选择了选项[0].为了防止这种情况,我们不得不写的样板代码容载量,将这些组合框的状态保存到一个cookie,或会话变量,或东西,这样当用户点击后退按钮,我们可以重新加载组合框背面到他们离开时他们所处的状态.

如果你在屏幕上有一个数据网格,这个问题就更复杂了.因为那时你必须想出一些方便的方法来保存那个网格,以防止不得不再次访问数据库.

然后是光明.浏览器开发人员意识到,由于这个问题,大多数Web开发人员都会回到编写Cobol中的终端程序,并在浏览器中添加了UI缓存.这让我们webdevs不再需要担心这个问题,除非在奇怪的情况下.

所以,生活很美好.然后有人提出了一个明智的想法,试图复制GWT,没有所有的麻烦和网络爆炸与所有这些JavaScript框架.目前正在处理的是AngularJS 1.2.10和Angular-UI.直到星期五(很可能是星期三),我才能对这项技术是否是我们现行标准(几乎普遍讨厌的)JSF的可行替代方案进行初步评估.

所以,我按照一些指南,将我的头撞在桌子上几次,我有一个有3个实际HTML页面的角度应用程序,每个HTML页面有2个视图.

在你去那里之前,要明白我们不能使用它,除非我们可以做多页JS应用程序.将要开发的一些应用程序已经开发了十年或更长时间,并且废弃整个用户界面并重新开始实际上在经济上不实用.我们宁愿做一些事情,比如取这50个struts页面并将它们转换为angular/rest并将它们无缝地链接回应用程序的剩余800个struts页面.

所以在我玩这个游戏时,我遇到了我的老头.后退按钮查看状态问题.

我一直在玩UI路由系统.我可以使用路线系统深度链接的事实解决了我的部分问题.但是,如果说我有这样的搜索页面:

view-search
    combo: search type [member,nonmember]
    combo: result type [detail,summary]
    combo: search state {all the states]
    textbox: contract number
    etc etc etc
Run Code Online (Sandbox Code Playgroud)

组合框选择和文本条目的各种组合提供了1000人的列表.现在,用户在数据网格上选择其中一个人,它将带您查看详细信息.那么你可以使用路由来做类似的事情index.html#detail/bob很酷,但是如果用户意识到这是错误的bob并点击后退按钮,他们再次得到一个空白的搜索屏幕,他们必须输入所有内容,更糟糕的是,发送另一个搜索数据库以重建datagrid.其中一些屏幕在搜索数据时有50个或更多选项可供选择,因此尝试将所有这些选项放入URL路由声音对我来说完全不切实际.

现在在我的研究中我找到了这篇文章:

使用Angular UI-Router保留状态

这有希望主要是因为我有一个视图状态对象,我可以存储到Redis数据库或会话EJB中,以便用户实际跳出角度并进入传统的Struts应用程序,然后将按钮返回到角度应用程序,但事实仍然是,在其中一些页面上,我们必须编写大量样板代码才能使其正常工作.

我真的不介意必须手动保存视图状态对象,并在用户进入或离开系统中的HTML页面时从Redis服务器或其他任何内容读回.我真正想要的是一种自动生成要保存的对象而无需编写大量锅炉代码的方法.

这可能吗?我一直在阅读ui-route文档,但它看起来并没有得到解决,至少不是我已经翻译过了.

如果可以,我应该看一下哪些控件?

谢谢

--------------编辑

我只是想到了什么.每个单页面应用程序都有一个中心范围.(我基本上将构建多个单页应用程序并将它们连接在一起)所以如果我使用命名约定,这样的事情

$scope.viewstate.view-search.searchType
$scope.viewstate.view-search.resultType
$scope.viewstate.view-search.searchState
Run Code Online (Sandbox Code Playgroud)

那么viewstate对象应该只是一个js数组,当我创建一个移动到struts.do的函数时,我可以简单地将该数组作为嵌套的地图对象保存到Redis服务器上.然后当我的用户返回按钮返回角度应用程序时,我可以使用路径系统捕获它并从Redis检索该视图状态对象并将其插回到我的范围中,从而一次性重建整个单页面应用程序的范围.

那会有用吗?

angularjs

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

仅当参数等于某值时才单击密码选项

在单击中,我正在定义此命令:

@click.command('time', short_help='Timesheet Generator')
@click.argument('time_command', type=click.Choice(['this', 'last']))
@click.argument('data_mode', type=click.Choice(['excel', 'exchange']), default='exchange')
@click.option('--password', prompt=True, hide_input=True, confirmation_prompt=False)
@pass_context
def cli(ctx, time_command, data_mode, password):
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是我只希望密码在data_mode参数等于exchange. 我怎么能把它拉下来?

python python-click

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

在pycharm的python控制台中路径一级太低

我正在研究我的第一个主要的python应用程序,并且在环境方面遇到了一些麻烦.我正在尝试使用python控制台(在pycharm中).当我关闭控制台时,我得到了 -

sys.path.extend(['/home/scphantm/code/gitflow_plus', '/home/scphantm/code/gitflow_plus/gitflow', '/home/scphantm/code/gitflow_plus/bin', '/home/scphantm/code/gitflow_plus/tests'])
Run Code Online (Sandbox Code Playgroud)

当我这样做 -

>>> sys.path
    ['/usr/local/pycharm/helpers/pydev', '/usr/local/lib/python2.7/dist-packages/GitPython-0.3.2.RC1-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/gitdb-0.5.4-py2.7-linux-x86_64.egg', '/usr/local/lib/python2.7/dist-packages/smmap-0.8.2-py2.7.egg', '/usr/local/lib/python2.7/dist-packages/async-0.6.1-py2.7-linux-x86_64.egg', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', '/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PILcompat', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntu-sso-client', '/home/scphantm/code/gitflow_plus', '/home/scphantm/code/gitflow_plus/gitflow', '/home/scphantm/code/gitflow_plus/bin', '/home/scphantm/code/gitflow_plus/tests']
Run Code Online (Sandbox Code Playgroud)

现在,如果我尝试对我的一个项目文件进行导入,我必须这样做

import gitflow.conf.configmanager
Run Code Online (Sandbox Code Playgroud)

而不是简单的

import conf.configmanager
Run Code Online (Sandbox Code Playgroud)

问题是配置管理器具有相对于gitflow文件夹的导入,并且找不到这些导入.

我想我要求的是什么,告诉python控制台有效去的命令

cd gitflow
Run Code Online (Sandbox Code Playgroud)

**更多信息

>>> os.getcwd()
'/home/scphantm/Code/gitflow_plus/gitflow'
>>> from conf.configmanager import ConfigManager
Traceback (most recent call last):
  File "<console>", line 1, in <module>
ImportError: No module named configmanager
Run Code Online (Sandbox Code Playgroud)

**目录结构

gitflow_plus (project root folder)
  bin
  gitflow
    bin
    conf
       __init__.py
       configmanager.py …
Run Code Online (Sandbox Code Playgroud)

python pycharm

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

将附加列添加到基本 kubectl get pods 命令

我正在尝试构建一个我们一直使用的自定义列查询。我想要的是得到这个基本输出:

NAME                               READY   STATUS    RESTARTS   AGE
mypod                              2/2     Running   4          2d3h
Run Code Online (Sandbox Code Playgroud)

只需向其中添加一列,我想要的就是添加NODE:.spec.nodeName到该表中。我找不到上述的基本列格式,有谁知道我在哪里可以找到它?我尝试在 kubectl 源代码中搜索,但这被证明是一个挑战。

我在哪里可以找到这个输出模式?

kubectl

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