小编Joh*_*ith的帖子

如何使用Fabric通过代理建立SSH连接?

我正在尝试在Windows PC和Linux服务器(amazon ec2)之间建立SSH连接.

我决定使用使用python实现的Fabric API.

我在Windows PC上安装了Putty.

我的fabfile脚本如下所示:

import sys
from fabric.api import *


def testlive():
  print 'Test live ...'
  run("uptime")

env.use_ssh_config = False
env.host_string = "host.something.com"
env.user = "myuser"
env.keys_filename = "./private_openssh.key"
env.port = 22
env.gateway = "proxyhost:port"

testlive()
Run Code Online (Sandbox Code Playgroud)

我在使用私钥的同一目录中运行Fabric.

我可以使用Putty在这台机器上登录.

问题:我经常被要求指定用户的登录密码.

基于其他帖子(这里这里)我已经尝试过:

  • 将密钥文件作为列表传递给env.keys_filename
  • 使用username @ host_string
  • 使用env.host而不是env.host_string

如何正确配置Fabric来处理代理服务器和ssh私钥文件?

python fabric

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

如何在TableViewer中更新ProgressBar?

在我的TableViewer中,我有一个OwnerDrawLabelProvider,对于我表中的特定列,我将ProgressBar添加到TableEditor实例.

我的问题如下:

我可以设置ProgressBar的选择,但在尝试更新时,它保持相同的值.

码:

@Override
public void update(ViewerCell cell) {
if(columnIndex == 4){

            Table table = tableViewer.getTable();
            TableItem item;
            TableItem[] items;
            TableEditor editor;             

            items = table.getItems();
            ProgressBar bar = new ProgressBar(table, SWT.NONE);
            bar.setMinimum(0);
            bar.setMaximum(100);
            bar.setState(SWT.NORMAL);
            bar.setSelection(0);
            bar.setLayoutData(new GridData(SWT.FILL,SWT.CENTER,true,true));
            if(mediator.isSent()){
                List<Item> itemsSendToSubmit = mediator.getItemsSendToSubmit();
                if(!itemsSendToSubmit.isEmpty()){
                    for(Iterator<Item> itemIterator = itemsSendToSubmit.iterator(); itemIterator.hasNext(); )
                    {
                        Item itemSubmited = itemIterator.next();                        
                        for(TableItem tableItem: items)
                        {                               if(tableItem.getText(0).contains(itemSubmited.getId())) 
                            {                   
                            bar.setSelection(PluginUtility.getBuildProgress(itemSubmited.getPlan()));
                                editor = new TableEditor(table);
                                editor.grabHorizontal = true;
                                editor.grabVertical = true;

                                editor.setEditor(bar, tableItem, 4);                    

                            }
                        }                   
                    }
                }
            } …
Run Code Online (Sandbox Code Playgroud)

java eclipse eclipse-plugin

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

如何使用 CMAKE 为交叉编译配置设置特定的 CMAKE_C_OUTPUT_EXTENSION?

我正在尝试设置一个工具链文件,以便与 CMake 3.12.0 版本进行交叉编译。

我的目标文件.obj与 Windows 和.oUNIX 中的扩展名不同。

因此,我将我的设置CMAKE_LANG_OUTPUT_EXTENSION.src.

不幸的是,这个变量被CMakeCInformation.cmake这些行中的文件覆盖:

# some compilers use different extensions (e.g. sdcc uses .rel)
# so set the extension here first so it can be overridden by the compiler specific file
if(UNIX)
  set(CMAKE_C_OUTPUT_EXTENSION .o)
else()
  set(CMAKE_C_OUTPUT_EXTENSION .obj)
endif()
Run Code Online (Sandbox Code Playgroud)

如果我注释这些行,我的配置将起作用并且将使用正确的对象扩展。

我认为我的工具链文件已配置为 CMake 不会执行其内部编译器检查。

这是我的工具链文件条目行的外观:

SET(CMAKE_SYSTEM_NAME Generic)

INCLUDE(CMakeForceCompiler)

SET(CMAKE_C_COMPILER_FORCED TRUE)
SET(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
#other compiler configuration lines here 
SET(CMAKE_C_OUTPUT_EXTENSION .src)
SET(CMAKE_ASM_OUTPUT_EXTENSION .o)
SET(CMAKE_C_OUTPUT_EXTENSION_REPLACE 1)
SET(CMAKE_ASM_OUTPUT_EXTENSION_REPLACE 1)
Run Code Online (Sandbox Code Playgroud)

我知道 …

c++ build cmake cmake-modules

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

如何跟踪 Jenkins 中的挂起构建?

我需要在 Jenkins 中找到分配给待处理构建的构建 ID。

我看到构建历史记录跟踪它们并将它们显示给用户,但我没有在此链接中找到它们以 api 表单(在我的情况下为 xml)显示

http://localhost:8080/job/JobName/api/xml
Run Code Online (Sandbox Code Playgroud)

我怎样才能从詹金斯那里得到这些信息?

java api jenkins

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

如何使用 OpenCV 显示 PGM 图像

我正在尝试使用 OpenCV(2.4.0) for C++ 加载和显示 .PGM 图像。

void open(char* location, int flag, int windowFlag)
{
    Mat image = imread(location, flag);
    namedWindow("Image window", windowFlag);
    imshow("Image window", image);
    waitKey(0);
}
Run Code Online (Sandbox Code Playgroud)

我是这样调用 open 的:

open("./img_00245_c1.pgm", IMREAD_UNCHANGED, CV_WINDOW_AUTOSIZE);
Run Code Online (Sandbox Code Playgroud)

问题是打开窗口时显示的图像比我用 IrfanView 打开文件时显示的图像更暗。此外,如果我尝试将此图像写入另一个文件,如下所示:

Mat imgWrite;
imgWrite = image;
imwrite("newImage.pgm", imgWrite)
Run Code Online (Sandbox Code Playgroud)

我将获得与原始文件内容不同的文件内容,并且 IrfanView 将在我的函数显示时使用 imshow 显示该内容。

.PGM 文件的 imread 中是否有不同的标志,以便我可以显示和保存原始文件?

编辑:图像pgm 文件

编辑 2 :备注: IrfanView 将图像标准化为最大像素值 255 。为了使用 OpenCV 清楚地看到图像,我还应该在加载 Mat 时对图像进行标准化。这是否可以直接使用 OpenCV 函数而无需遍历像素并修改它们的值?

c++ opencv pgm

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

如何从 Eclipse 的导航器视图中获取选定的项目?

我用来从项目资源管理器中获取选定的项目,并使用聚焦于项目资源管理器窗口的 ISelection :

IProject project = null;    





    ISelectionService  selectionService=PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

    ISelection selection = selectionService.getSelection("org.eclipse.jdt.ui.ProjectExplorer");    



    if(selection instanceof IStructuredSelection) {    
        Object element = ((IStructuredSelection)selection).getFirstElement();    

        if (element instanceof IResource) {    
            project= ((IResource)element).getProject();    

        }  
        else if (element instanceof IPackageFragmentRoot) {    
            IJavaProject jProject = ((IPackageFragmentRoot)element).getJavaProject(); 
            project = jProject.getProject();
        }
        else if (element instanceof IJavaElement) {    
            IJavaProject jProject= ((IJavaElement)element).getJavaProject();    
            project = jProject.getProject();    
        }
Run Code Online (Sandbox Code Playgroud)

我需要将选择集中在 Navigator 上,我在 getSelection 方法中尝试了 org.eclipse.jdt.internal.ui.Navigator 但它不起作用......

如何从导航器视图中获取选定的项目?

java eclipse eclipse-rcp

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