小编Gle*_*iet的帖子

从Java运行UNIX命令作为不同的用户

尝试编写能够以不同的UNIX用户身份运行UNIX命令的Java程序.我有用户的密码,我知道我想要运行的命令,但该命令必须以该用户身份运行 - 所以我必须先以该用户身份登录.

例如:假设我们有一个用户,jim,谁想要查看bob的主目录中的内容,并且(无论出于何种原因)jim可以访问执行ls而bob没有.我们目前以bob身份登录.这是我们(可以)做的:

bob@host$ su jim && ls ~bob
Run Code Online (Sandbox Code Playgroud)

问题是,我们会收到jim密码的提示.因为这是从Java程序运行的,即

Process p = Runtime.getRuntime().exec("su jim && ls ~bob");
Run Code Online (Sandbox Code Playgroud)

我们收到jim密码的提示并挂断了.我们知道jim的密码.但是,我不能输入它.

此外,我们不能使用Expect脚本(没有安装它),我们不能成为超级用户.我也考虑使用SSH来尝试这个,因为我们可以在技术上做到这一点

bob@host$ ssh jim@host "ls ~bob"
Run Code Online (Sandbox Code Playgroud)

但由于我没有设置无密码SSH的权限,这也行不通.

我最后的努力是尝试使用SSH库来实现Java,因为密码可供Java程序使用,我可以用它登录(并执行正确的命令).但是因为我要在同一台主机上运行,​​所以看起来有点矫枉过正.

有什么建议?

PS:Java版本1.4.2,无法升级; AIX UNIX 5.3.

java unix passwords ssh aix

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

控制Django ModelForm输出

我在Django中有一个Model,下面的示例代码(不是我的实际代码):

class Department(models.Model):
    name = models.CharField(max_length=100)
    abbreviation = models.CharField(max_length=4)
Run Code Online (Sandbox Code Playgroud)

假设我在Django shell中执行以下操作:

>>> Department(name='Computer Science',abbreviation='C S ').save()
>>> Department(name='Mathematics',abbreviation='MATH').save()
>>> Department(name='Anthropology',abbreviation='ANTH').save()
Run Code Online (Sandbox Code Playgroud)

我现在将这四个部门存储在我的数据库中.假设我们有另一个类,Course属于Department:

class Course(models.Model):
    department = models.ForeignKey('Department')
    number = models.IntegerField()

class CourseForm(ModelForm):
    class Meta:
        model = Course
Run Code Online (Sandbox Code Playgroud)

如果我ModelForm通过引用一个变量来直接在模板中渲染对象,比如form传递下来,那么Departments就会出现在一个下拉框(HTML选择框)中.到现在为止还挺好.

问题是:选择框中的项目按ID排序.所以他们看起来像:

  1. 计算机科学
  2. 数学
  3. 人类学

但是,我希望它们按字母顺序排序,即

  1. 人类学
  2. 计算机科学
  3. 数学

如何更改这些项在ModelForm代码或代码中的排序方式Model,而不是在模板中?

一般来说,如何通过ModelForm?生成特定字段或窗口小部件的工作方式?

python django django-templates django-forms

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

在Java中将希腊语转换为大写

我想要做的很简单:

String example = "??????? ?????? ????? ?????? ?? - Mary Had A Little Lamb";
String upper = example.toUpperCase();
Run Code Online (Sandbox Code Playgroud)

在希腊语中,只有大写单词的第一个字母应包含重音字符.

// upper contains the following (incorrect) string:
// ??????? ?????? ????? ?????? ?? - MARY HAD A LITTLE LAMB

// correct string:
// ??????? ?????? ????? ?????? ?? - MARY HAD A LITTLE LAMB 
Run Code Online (Sandbox Code Playgroud)

(口音很难看,但它们在那里.)

根据Java 1.7文档,我应该能够将语言环境传递给toUpperCase,如下所示:

String upper = example.toUpperCase(new java.util.Locale("el"));
Run Code Online (Sandbox Code Playgroud)

但是,看起来似乎没有toUpperCase正确处理希腊语的具体规则.

是否可以定义toUpperCase特定区域设置的行为,以便我可以确保获得正确的结果?

或者,我可以编写一个实用程序类来处理这种特殊情况.但如果可能的话,我宁愿在每个语言环境中覆盖此函数,以防其他语言出现.

java localization internationalization

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

SIGSEGV,(貌似)由 printf 引起

首先,对于任何交叉发布,我们深表歉意。希望我不会在这里重复问题,但我无法在其他地方找到它(通过 Google 和 Stack Overflow)。

这是错误的要点。如果我打电话printfsprintf或者fprintf我的代码中的任何位置,显示浮动,我得到一个SIGSEGV (EXC_BAD_ACCESS)错误。让我举个例子吧。

以下抛出错误:

float f = 0.5f;
printf("%f\n",f);
Run Code Online (Sandbox Code Playgroud)

此代码不会:

float f = 0.5f;
printf("%d\n",f);
Run Code Online (Sandbox Code Playgroud)

我意识到那里有一个隐式转换,但我并不关心。我只是无法理解为什么打印浮点数与打印整数会引发错误。

注意:部分代码用于malloc创建一些非常大的多维数组。但是,这些打印语句没有以任何方式引用这些数组。这是我如何声明这些数组的示例。

#define X_LEN 20
#define XDOT_LEN 20
#define THETA_LEN 20
#define THETADOT_LEN 20
#define NUM_STATES (X_LEN+1) * (XDOT_LEN+1) * (THETA_LEN+1) * (THETADOT_LEN+1)
#define NUM_ACTS 100

float *states = (float *)malloc(NUM_STATES * sizeof(float));
// as opposed to float states[NUM_STATES] (more memory effecient)


float **q = (float**)malloc(NUM_STATES * sizeof(float*)); …
Run Code Online (Sandbox Code Playgroud)

c malloc printf segmentation-fault

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

适用于Mac的SharePoint Designer?

我正在寻找一些在我的Mac上编辑SharePoint ASPX页面的方法,使用本地文本编辑器或某种远程进入SP服务器的解决方案(如带有tramp的emacs).我知道Cyber​​duck能够使用NTLM身份验证打开WebDAV服务器,但我无法让它工作.

到目前为止,我发现的唯一解决方案是使用与Windows Server的远程桌面连接,并从那里运行SharePoint Designer.

任何人都知道更好的方法或SharePoint Designer替代方案?

macos sharepoint remote-desktop sharepoint-designer

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

相同的C++代码导致Windows上的无限循环和OSX上的预期行为

这是我见过的最奇怪的事情之一.我正在一所大学教授一门C++入门课程,我的一位学生联系我说他的代码永远不停地运行.我在课堂上简短地浏览了他的代码,并没有立即看到任何明显的东西,所以我让他给我发了他的代码.

没有做任何更改,我下载并在我的机器上运行他的代码 - 它工作正常.我能看到的唯一区别是我正在使用OSX,而​​他正在使用Windows.

这是代码:http://pastie.textmate.org/private/9rzpttixnuhudsvsm1yl4q

有任何想法吗?

解决:PEBKAC Abides

这个问题实际上与学生输入的内容有关.在提示存款时尝试输入一个字符串,我从来没有想过.

顺便说一句,关于这些天大学程序员的"质量"的贬低评论:我不确定该评论是针对我还是针对我的学生,但我想简要介绍两种观点.

假设它是针对我的:我是课程的助教,而不是主讲师,我负责教授实验课程.因此,通过"教授C++入门课程",我的意思是"实验作业中涵盖的教材".关于我自己的背景和经验,我不得不承认我感到有些轻视.我首先是一名人工智能研究员,在一个主要是理论的领域工作(读:逻辑和数学),我不必编写C++代码.我将此问题发布到Stack Overflow 的全部原因是因为我总是在这里找到有用且有创意的解决方案.我心里想,"这里有一些奇怪的东西,我不会马上看到,但不要担心,SO上的人都有这个."

所有这一切:我正在尽我所能帮助这些孩子学习这些材料. 这种态度对任何事都没有帮助.

假设它是针对我的学生的:来吧,真的吗?他甚至不是一个CS专业,这个任务是由类的第三个星期-他的节目的第三个星期的任何一种,永远.我不想在游戏初期劝阻他.

c++ windows macos iostream while-loop

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