我想替换ruby中最后一次出现的子串.什么是最简单的方式?例如,在abc123abc123中,我想将最后一个abc替换为ABC.我怎么能这样做?
我一直在寻找,但我无法确定这是否可行.
基本上,http://luarocks.org已经关闭了,我已经在这里本地安装了另一台机器上的luafilesystem副本.使用Ruby,可以在本地使用'gem'命令交叉安装ruby gems.我想知道岩石和蜥蜴是否可能相同.
有没有办法通过使用该岩石的另一个本地安装来"交叉安装"岩石(例如,luafilesystem)?
就像是:
luarocks install //10.0.1.123/machine/path/to/luafilesystem/on/other/machine
是我希望能够做到的.
更新:我甚至很乐意与如何从名为.tar.gz或.zip安装一块岩石上,举例来说,如果我下载一个图像从这个位置(在LuaFileSystem的情况下).
在这种情况下,安装的"源"将是/可能是机器的本地,而不是远程(并且不一定已经安装为摇滚).
我使用ruby 1.9.2-p320和Heroku的Taps一起使用'db'命令得到以下错误,例如:
heroku db:pull --app my-app
Run Code Online (Sandbox Code Playgroud)
这会产生如下错误:
Taps Load Error: no such file to load -- sqlite3
Run Code Online (Sandbox Code Playgroud)
-要么-
Taps Load Error: no such file to load -- pg
Run Code Online (Sandbox Code Playgroud)
(是的,顺便说一下,我拥有所有正确的宝石,包括postgres - 本地运行良好 - 和sqlite3,以及卸载,重新安装和更新水龙头和heroku宝石,包括它们以及不包括它们将它们包含在我的Gemfile中.我正在运行Rails 3.2.6)
虽然有一个已知的错误会导致"时区位移"错误:heroku db:push not working,使用tap gem,我还没有看到任何直接解决此问题的SO帖子.
我想用一个好的"国家空间"解决"河内塔"的问题.使用适当的状态空间是一些AI技术所建议的方式.拥有一个良好的状态空间,我希望能够构建一个搜索树,然后使用一些策略,如"DFS"(深度优先搜索)来找到解决方案.
我的问题是,我只是不知道如何开发一个好的状态空间然后用它来构建一个搜索树.任何人都可以描述如何为河内塔问题创建一个州空间吗?然后告诉我如何为此构建搜索树?
关于JavaFX的新手问题我无法回答,尽管知道它必须非常简单,并且在我看过的任何地方都找不到任何资源(教程,许多Oracle在线文档,文章,以及已知的JavaFX博主等)
我正在开发一个运行应用程序的命令行(脚本),我已经成功地从脚本中获取输出(通过ProcessBuilder),我可以持续显示,就像在命令行上发生的那样.也就是说,我可以System.out.println(line);整天做,在控制台中显示输出,它只是返回正在运行的'myProcess'返回的输入流的输出,如下所示:
BufferedReader bri = new BufferedReader(new InputStreamReader(myProcess.getInputStream()))
Run Code Online (Sandbox Code Playgroud)
所以我能够看到从脚本返回的所有输出.
我想设置一个JavaFX TextArea或ScrollPane,或者不确定是什么,以显示这个输出文本(它有很多,如几千行)作为脚本中正在发生的'进展',当它发生的时候.我有一个场景,我有按钮并从这个场景获取输入以启动脚本运行,但现在我想显示点击"运行此脚本"按钮的结果,可以这么说.
我假设我需要创建一个TextArea,如此处所述,或者TextBuilder可能对开始制作它很有用.不确定.
我需要一些帮助来设置绑定或自动滚动/自动更新的一部分.
有人可以为我提供一个开始的地方,用JavaFX做到这一点吗?我宁愿不使用Swing.
(我正在使用JavaFX 2.2,JDK 1.7u7,所有最新的东西,是的,这是一个FXML应用程序 - 所以这样做是首选.)
更新:Sergey Grinev的回答在绑定部分非常有帮助.但是,当我要求"如何设置一些帮助"时,这里有一些更详细的信息 - 基本上,我需要将控制权返回到主场景以允许用户取消脚本,或者以其他方式监视这是怎么回事.所以我想"生成"运行该脚本的进程(也就是说,有某种'自由运行进程'),但仍然从中获取输出.(在我最初的问题中,我对此并不十分清楚.)
我在这里使用的技术(见下文)是在进程上执行waitFor,但这当然意味着在脚本执行时对话框/场景被"挂起".我想获得控制权,但是如何将'p'(进程)传递给其他控制器部分(或者,只需启动其他进程传入参数以启动脚本并让它启动脚本)然后通过绑定Sergey Grinev提到自动更新 - 没有"挂"场景/窗口?另外:如果用户请求,我可以"停止"这个其他过程吗?
这是我当前的代码('等待'而脚本 - 运行需要20-40分钟! - 完成;这不是我想要的,我想控制返回给用户):
public class MyController implements Initializable {
@FXML
private void handleRunScript(ActionEvent event) throws IOException {
ProcessBuilder pb = new ProcessBuilder("myscript.sh", "arg1", "arg2", ...);
Process p = pb.start();
try {
BufferedReader bri = new BufferedReader
(new InputStreamReader(p.getInputStream()));
String line;
while ((line = …Run Code Online (Sandbox Code Playgroud) 如果我已经构建了一个私有gem(例如在我的公司内部托管),那么我想在我正在构建的另一个gem(不是app!)中重用那个gem,我该怎么做?
我在哪里放置我的依赖项并告诉我的新gem如何找到旧的(已经构建的)私有托管的gem?
所以我是一个非常被宠坏的rubyist,基本上不再需要使用sudo安装任何东西了.我已经安装了node.js和npm(授予,使用Mac 64位.pkg,这可以让gosh知道我的系统上有什么)并且它们工作正常.
现在,执行以下操作:
npm install jasmine-node -g
不起作用并说:"请尝试以root/Administrator再次运行此命令." 我的意思是sudo npm install jasmine-node -g
这样做的:npm install jasmine-node(未全局)工作正常,但正确不设置我的道路,不通过命令行,运行等
如何应我安装茉莉花节点? cd对/usr/local/bin有安装(不"-g"选项)?使用自制软件?或者使用sudo ...我上面列出的命令?
谢谢.
/更新:如上所述,我使用通用安装程序在我的Lion OS X Mac(64位)上安装了node.js和npm,这是我在/ usr/local/bin中的节点/ npm列表,以防它们是帮助:
-rwxr-xr-x 1 24561 wheel 355 Apr 11 2012 /usr/local/bin/node-waf
-rwxr-xr-x 1 24561 wheel 18930304 Oct 25 14:07 /usr/local/bin/node
lrwxr-xr-x 1 root admin 38 Nov 12 10:00 /usr/local/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js
Run Code Online (Sandbox Code Playgroud)
此外,我找到了这个答案,这是另一个选择(除了上面提到的三个).
请让我知道推荐哪种方法(再次,理想情况下,不使用'sudo'是我的偏好).
/ END UPDATE
以下是使用-g(全局)返回(不使用sudo)的方法:
npm …Run Code Online (Sandbox Code Playgroud) 我试图通过我的FXML应用程序中的ProcessBuilder创建并销毁我创建的外部进程,但它无效.这是基于Sergey Grinev给我的有用建议.
我尝试使用/不使用"// myController.setApp(this);"运行 并使用"// super.stop();" 在子类的顶部和底部(请参阅MyApp中该行的注释/输入),但没有组合可行.
这可能与FXML或JavaFX无关,但我认为这是在JavaFX上开发应用程序的常见模式.我想我要求一个Java最佳实践来关闭基于UI的应用程序中的依赖进程(如本例所示:基于FXML/JavaFX),其中有一个控制器类和一个应用程序类.
你能解释一下我做错了什么吗?或者更好:建议我应该做什么呢?谢谢.
在我的应用程序中我这样做:
public class MyApp extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
FXMLLoader fxmlLoader = new FXMLLoader();
Scene scene = (Scene)FXMLLoader.load(getClass().getResource("MyApp.fxml"));
MyAppController myController = (MyAppController)fxmlLoader.getController();
primaryStage.setScene(scene);
primaryStage.show();
// myController.setApp(this);
}
@Override
public void stop() throws Exception {
// super.stop();
// this is called on fx app close, you may call it in an action handler too
if (MyAppController.getScriptProcess() != null) {
MyAppController.getScriptProcess().destroy();
}
super.stop(); …Run Code Online (Sandbox Code Playgroud)