我正在使用Scriptler插件,所以我可以运行一个groovy脚本作为构建步骤.我的Jenkins奴隶在服务模式下运行在Windows上.使用scriptler,我不需要使用Windows批处理脚本.
但我很难在构建步骤中获取环境变量...这是有效的:
System.getenv("BASE")
Run Code Online (Sandbox Code Playgroud)
哪里BASE
是詹金斯启动将env-瓦尔的一部分.但是,我想得到
%JOB_NAME%
Run Code Online (Sandbox Code Playgroud)
如果我正在添加"执行Windows批处理命令"构建步骤:
echo %JOB_NAME%
Run Code Online (Sandbox Code Playgroud)
有用.如果我使用相同的设置添加脚本编写器脚本作为构建步骤:
println "JOB_NAME: " + System.getenv("JOB_NAME")
Run Code Online (Sandbox Code Playgroud)
我越来越:
JOB_NAME: null
Run Code Online (Sandbox Code Playgroud)
那么如何从groovy脚本中获取注入的环境变量作为构建步骤?
我目前在构建中看到一组错误.
如果你放松詹金斯(比如说是箱子崩溃,还是杀人-9),这是预期的行为吗?
或者是否有更糟糕的事情(如糟糕的网络连接)?
堆栈和错误是:
hudson.remoting.RemoteInvocationHandler.invoke(RemoteInvocationHandler.java:158)
at $Proxy175.join(Unknown Source) at
hudson.Launcher$RemoteLauncher$ProcImpl.join(Launcher.java:861) at
hudson.Launcher$ProcStarter.join(Launcher.java:345) at
hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:82)
at
hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:58)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at
hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:703)
at hudson.model.Build$RunnerImpl.build(Build.java:178) at
hudson.model.Build$RunnerImpl.doRun(Build.java:139) at
hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:473)
at hudson.model.Run.run(Run.java:1410) at
hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46) at
hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:238) Caused by:
hudson.remoting.RequestAbortedException: java.io.IOException:
Unexpected termination of the channel at
hudson.remoting.Request.abort(Request.java:273) at
hudson.remoting.Channel.terminate(Channel.java:732) at
hudson.remoting.Channel$ReaderThread.run(Channel.java:1157) Caused by:
java.io.IOException: Unexpected termination of the channel at
hudson.remoting.Channel$ReaderThread.run(Channel.java:1133) Caused by:
java.io.EOFException at
java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2554)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1297)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at hudson.remoting.Channel$ReaderThread.run(Channel.java:1127)
Run Code Online (Sandbox Code Playgroud) 这就是我目前的做法:
import os
from setuptools import setup, find_packages
here = os.path.abspath(os.path.dirname(__file__))
requires = [
'pyramid',
'pyramid_debugtoolbar',
'waitress',
'requests',
'mock',
'gunicorn',
'mongoengine',
]
setup(name='repoapi',
version='0.0',
description='repoapi',
packages=find_packages(),
include_package_data=True,
zip_safe=False,
install_requires=requires,
tests_require=requires,
test_suite="repoapi",
entry_points="""\
[paste.app_factory]
main = repoapi:main
""",
)
Run Code Online (Sandbox Code Playgroud)
这是好的方式吗?我有一些麻烦.例如,对于金字塔,我不能使用系统范围的nosetests插件来运行测试.我需要pyramid
在全局python site-packages中安装!
但我不希望这样.所以我必须在这个项目的virtualenv中安装鼻子.但我不希望它成为一种依赖.我不觉得它应该属于requires
.事实并非如此.然而,我也不想一直手工安装.是的我知道我有很多我不想这样做那......
但你怎么解决这个问题呢?我不想篡改全局python站点包,但我想安装nose作为virtualenv的一部分.
另外,pip安装需求文件.它稍微准确一点,因为我不需要手动指定版本,我不需要害怕手动更新setup.py.刚刚pip freeze > file.txt
完成.
但是,pip可以返回垃圾,因为我们将垃圾包扔进了virtualenv.
这么多刀片.什么是最佳做法?你是如何处理这些问题的?
也许我错过了它,但https://github.com/django/django/blob/master/setup.py,Django是怎么做到的?
我想写一个bash脚本,检查是否至少有一个参数,如果有一个参数,如果该参数是0或1.这是脚本:
#/bin/bash
if (("$#" < 1)) && ( (("$0" != 1)) || (("$0" -ne 0q)) ) ; then
echo this script requires a 1 or 0 as first parameter.
fi
xinput set-prop 12 "Device Enabled" $0
Run Code Online (Sandbox Code Playgroud)
这会出现以下错误:
./setTouchpadEnabled: line 2: ((: ./setTouchpadEnabled != 1: syntax error: operand expected (error token is "./setTouchpadEnabled != 1")
./setTouchpadEnabled: line 2: ((: ./setTouchpadEnabled -ne 0q: syntax error: operand expected (error token is "./setTouchpadEnabled -ne 0q")
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我正在使用webpack捆绑我的JavaScript.我依赖于使用任何承诺的冰棒等模块.
这是我的代码:
var popsicle = require('popsicle');
popsicle.get('/').then(function() {
console.log('loaded URL');
});
Run Code Online (Sandbox Code Playgroud)
这在Promise
可用的浏览器中工作正常,但IE 11不提供Promise.所以我想使用es6-promise作为polyfill.
我尝试添加一个明确的ProvidePlugin
给我webpack.config.js
:
plugins: [
new webpack.ProvidePlugin({
'Promise': 'exports?global.Promise!es6-promise'
})
]
Run Code Online (Sandbox Code Playgroud)
但我仍然在IE 11中得到错误:any-promise browser requires a polyfill or explicit registration e.g: require('any-promise/register/bluebird')
.
我尝试明确附加全局:
global.Promise = global.Promise || require('es6-promise');
Run Code Online (Sandbox Code Playgroud)
但IE 11给出了一个不同的错误:Object doesn't support this action
.
我也尝试过明确注册es6-promise:
require('any-promise/register/es6-promise');
var popsicle = require('popsicle');
Run Code Online (Sandbox Code Playgroud)
这有效,但我必须在每个加载的文件中执行此操作popsicle
.我想Promise
加入window
.
如何window.Promise
使用webpack …
我有一个包含大量GIF的页面.
<img src="gif/1303552574110.1.gif" alt="" >
<img src="gif/1302919192204.gif" alt="" >
<img src="gif/1303642234740.gif" alt="" >
<img src="gif/1303822879528.gif" alt="" >
<img src="gif/1303825584512.gif" alt="" >
Run Code Online (Sandbox Code Playgroud)
我正在寻找什么
1页面加载=>停止所有GIF的动画
2在鼠标悬停时=>为该一个gif启动动画
3在mouseout =>动画再次停止该gif
我想这可以在Jquery中完成,但我不知道如何.
当一个新的开发人员加入团队,或者Jenkins运行完整的构建时,我需要创建一个新的virtualenv.我经常发现使用Pip和大量(超过10个)需求设置virtualenv需要很长时间才能从PyPI安装所有内容.通常它完全失败:
Downloading/unpacking Django==1.4.5 (from -r requirements.pip (line 1))
Exception:
Traceback (most recent call last):
File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/basecommand.py", line 107, in main
status = self.run(options, args)
File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/commands/install.py", line 256, in run
requirement_set.prepare_files(finder, force_root_egg_info=self.bundle, bundle=self.bundle)
File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/req.py", line 1018, in prepare_files
self.unpack_url(url, location, self.is_download)
File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/req.py", line 1142, in unpack_url
retval = unpack_http_url(link, location, self.download_cache, self.download_dir)
File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/download.py", line 463, in unpack_http_url
download_hash = _download_url(resp, link, temp_location)
File "/var/lib/jenkins/jobs/hermes-web/workspace/web/.venv/lib/python2.6/site-packages/pip-1.2.1-py2.6.egg/pip/download.py", line 380, in _download_url
chunk = resp.read(4096)
File "/usr/lib64/python2.6/socket.py", line 353, in read …
Run Code Online (Sandbox Code Playgroud) 我调整了一个简单的程序来计算和绘制Julia的运动漩涡以测试语言,我也用Python编写它没有特别的原因.
(免责声明:1.我读过的stackoverflow的每一次性能比较都因为没有全面/正确/写得好/相关等等而受到抨击 - 我不是假装这是一个真正的比较,我只想知道如何制作朱莉娅更快.2.我知道python可以优化,在Cython等中实现,这不是讨论的一部分,它只是在这里为Julia和Python中的等效函数的参考.)
代码和性能结果可以在一个要点中看到.
Julia的表现明显慢于Fortran.执行计算所花费的时间是(50000个时间步长):
Fortran: 0.051s
Julia: 2.256s
Python: 30.846s
Run Code Online (Sandbox Code Playgroud)
朱莉娅比Fortran慢得多(慢44倍),差距缩小但仍然显着,时间步长增加10倍(0.50s vs 15.24s
).
这些结果与julia主页上显示的结果有很大不同.我究竟做错了什么?我可以修快朱莉娅吗?
我在Julia主页上浏览了Julia Performance Tips页面和比较背后的代码,没有什么能让我解决.
同样有趣的是,Julia加载PyPlot(5secs
ish !!)非常慢,而且比Python读取文本文件要慢得多.我可以做些什么来改善这些事情吗?
请注意,上面的时间不显示Julia和Python的加载时间,它只是计算AFAIK所需的原始时间 - 请参阅代码.对于fortran来说,这就是整个事情.在每种情况下,绘图都已大致关闭以允许速度比较.
计算机:Intel i7-3770,16GB RAM,SSD HD,操作系统:Ubuntu 13.10 64bit.,Fortran:gfortran,GNU Fortran(Ubuntu/Linaro 4.8.1-10ubuntu9)4.8.1,Julia:版本0.3.0-prerelease + 396 (2013-12-12 00:18 UTC),提交c5364db*(0天大师),x86_64-linux-gnu,Python:2.7.5+
根据ivarne的建议,我重新编写了Julia脚本(在上面的gist中更新):在函数中封装grunt工作,声明所有内容的类型,并在适用的情况下将矩阵的不同元素拆分为不同的数组.(我在很多地方都包含了Float64,因为我尝试了Float32,看看是否有帮助,但大部分时间都没有).
结果如下:
50,000
时间步骤:
Fortran: 0.051s (entire programme)
Julia: raw calc.: 0.201s, calc. and return (?): 0.758s, total exec.: 6.947s
Run Code Online (Sandbox Code Playgroud)
500,000
时间步骤:
Fortran: 0.495s (entire programme)
Julia: raw calc.: 1.547s, …
Run Code Online (Sandbox Code Playgroud) 如果我Object.hashcode()
在某个对象上调用该方法,则返回该对象的内部地址(默认实现).该地址是逻辑地址还是物理地址?
在垃圾收集中,由于内存压缩,对象移位发生在内存中.如果我在GC之前和之后调用哈希码,它会返回相同的哈希码(它返回),如果是,那么为什么(因为压缩地址可能会改变)?
PyPI如何处理区分大小写?
例如,这个SO问题记录了PyPI foobar
如果FooBar
已经存在则拒绝新包.
pip
针对pypi.python.org 运行似乎转换为包的规范案例:
$ pip install django
Downloading/unpacking django
Downloading Django-1.7.tar.gz (7.5MB): 7.5MB downloaded
Run Code Online (Sandbox Code Playgroud)
或者:
$ pip install Django
Downloading/unpacking Django
Downloading Django-1.7.tar.gz (7.5MB): 7.5MB downloaded
Run Code Online (Sandbox Code Playgroud)
但是,在我的virtualenv中,只有一些文件似乎属于规范案例:
$ ls ~/pyenvs/test_venv/lib/python2.7/site-packages/ | grep -i django
django/
Django-1.7-py2.7.egg-info/
Run Code Online (Sandbox Code Playgroud)
XML-RPC API期望什么?我是否可以一直认为http://pypi.python.org/simple/foo和http://pypi.python.org/simple/FoO都会返回HTTP 200?
PyPI在案例敏感方面的立场是否记录在案?